1. 29 9月, 2021 1 次提交
  2. 28 9月, 2021 1 次提交
    • L
      feat: L0-L1 支持Perf · 6e0a3f10
      LiteOS2021 提交于
          1.【需求描述】:
               L0-L1 支持Perf,提供2种模式的配置, 及3大类型的事件配置:
               2种模式:计数模式(仅统计事件发生次数)、采样模式(收集上下文如任务ID、pc、backtrace等)。
               3种事件类型:CPU硬件事件(cycle、branch、icache、dcache等)、OS软件事件(task switch、mux pend、irq等)、高精度周期事件(cpu          clock)。
          2.【方案描述】:
               L0:
               基于事件采样原理,以性能事件为基础,当事件发生时,相应的事件计数器溢出发生中断,在中断处理函数中记录事件信息,包括当前的pc、当前运         行的任务ID以及调用栈等信息。
               L1:
               新增perf字符设备,位于“dev/perf”,通过对设备节点的read\ioctl,实现用户态perf
      
          BREAKING CHANGE:
          1.新增一系列perf的对外API,位于los_perf.h中.
          LOS_PerfInit配置采样数据缓冲区
          LOS_PerfStart开启Perf采样
          LOS_PerfStop停止Perf采样
          LOS_PerfConfig配置Perf采样事件
          LOS_PerfDataRead读取采样数据
          LOS_PerfNotifyHookReg 注册采样数据缓冲区的钩子函数
          LOS_PerfFlushHookReg 注册缓冲区刷cache的钩子
      
          2. 用户态新增perf命令
        【Usage】:
      ./perf [start] /[start id] Start perf.
      ./perf [stop] Stop perf.
      ./perf [read nBytes] Read nBytes raw data from perf buffer and print out.
      ./perf [list] List events to be used in -e.
      ./perf [stat] or [record] <option> <command>
               -e, event selector. use './perf list' to list available events.
               -p, event period.
               -o, perf data output filename.
               -t, taskId filter(whiltelist), if not set perf will sample all tasks.
               -s, type of data to sample defined in PerfSampleType los_perf.h.
               -P, processId filter(whiltelist), if not set perf will sample all processes.
               -d, whether to prescaler (once every 64 counts), which only take effect on cpu cycle hardware event.
      
          Close #I47I9A
      Signed-off-by: NLiteOS2021 <dinglu@huawei.com>
      Change-Id: Ieb9b7483c85d1495df7c55bc0027f4309dff9814
      6e0a3f10
  3. 14 9月, 2021 1 次提交
  4. 31 8月, 2021 1 次提交
    • L
      feat: L0-L1 支持Trace · dc9ec685
      LiteOS2021 提交于
              1.【需求描述】
                  L0~L1 支持Trace,提供两种工作模式:在线模式、离线缓存模式, 用于按时间线追踪系统事件,如任务切换、中断、ipc等。
              2.【方案描述】
                  L0:
                  (1).在内核模块预置静态代码桩
                  (2).触发桩后,收集系统上下文信息
                  (3).离线模式则写入内存,用户可通过dump导出;
                  (4).在线模式通过pipeline对接IDE进行可视化解析和展示;
                  L1:
                  新增trace字符设备,位于"/dev/trace",通过对设备节点的read\write\ioctl,实现用户态trace;
      
              BREAKING CHANGE:
              1.新增一系列trace的对外API,位于los_trace.h中.
              LOS_TRACE_EASY简易插桩
              LOS_TRACE标准插桩
              LOS_TraceInit配置Trace缓冲区的地址和大小
              LOS_TraceStart开启事件记录
              LOS_TraceStop停止事件记录
              LOS_TraceRecordDump输出Trace缓冲区数据
              LOS_TraceRecordGet获取Trace缓冲区的首地址
              LOS_TraceReset清除Trace缓冲区中的事件
              LOS_TraceEventMaskSet设置事件掩码,仅记录某些模块的事件
              LOS_TraceHwiFilterHookReg注册过滤特定中断号事件的钩子函数
      
              Close #I46WA0
      Signed-off-by: NLiteOS2021 <dinglu@huawei.com>
      
      Change-Id: I6a8e64794c4852f2c2980993a06180e09ec6ee0d
      dc9ec685
  5. 30 8月, 2021 1 次提交
  6. 05 8月, 2021 1 次提交
  7. 20 7月, 2021 1 次提交
    • Y
      fix: init进程收到子进程退出信号后,调用fork重新拉起进程,会导致系统卡死 · 35a2f3af
      YOUR_NAME 提交于
      问题原因:init进程执行信号时,线程栈底预留了部分空间给信号上下文使用,
      从而导致处理信号时线程栈底比线程控制块里面记录的大,这样在fork的过程中内核
      从init线程栈底copy线程上下文给新进程时,copy的不是实际运行的栈底,以致于
      新进程的线程上下文不对,在实际运行时跑飞,引发系统卡死。
      解决方案:在fork过程copy线程上下文时,判断是否预留了信号上下文空间,如果预留
      了,则copy的栈底要基于预留后的栈底去copy线程上下文。
      
      close: #I41HOY
      Signed-off-by: Nzff <zhangfanfan2@huawei.com>
      Change-Id: I61cb05183c78919730e3a68c1c85b72fa1decd16
      35a2f3af
  8. 15 7月, 2021 1 次提交
  9. 14 7月, 2021 1 次提交
    • Q
      feat: add blackbox for liteos_a · a195aac9
      qidechun 提交于
      1、在内核增加BlackBox核心框架,对外提供模块回调接口注册和故障处理接口。
      2、增加默认的系统模块适配层,处理通用内核态和用户态故障日志抓取和保存。
      3、BBOX特性默认关闭,若想使用此特性,请在内核配置文件中增加如下编译选项:
      LOSCFG_BLACKBOX=y
      LOSCFG_SAVE_EXCINFO=y
      LOSCFG_SAVE_EXCINFO可以帮助抓取更多的故障日志。
      4、若已经打开BBOX特性,想快速验证此特性,请添加如下编译选项:
      LOSCFG_HIDUMPER=y
      
      Close #I406NP
      Signed-off-by: Nqidechun <qidechun@huawei.com>
      a195aac9
  10. 08 7月, 2021 1 次提交
    • X
      fix:消除编译告警 · e4ff0458
      x_xiny 提交于
      【背景】
       消除编译告警
      
      【修改方案】
       消除编译告警
      
       re #I3ZC1R
      
       Change-Id: I594d0f57e4cbbdb246a6bef1c978a38228123a34
      Signed-off-by: Nx-xiny <1301913191@qq.com>
      
      Change-Id: I1d75cdcdcf9d06ec28e541cdfea77300da7c6bb1
      e4ff0458
  11. 07 7月, 2021 2 次提交
  12. 06 7月, 2021 1 次提交
    • Q
      feat: add blackbox for liteos_a · 425975e4
      qidechun 提交于
      1、在内核增加BlackBox核心框架,对外提供模块回调接口注册和故障处理接口。
      2、增加默认的系统模块适配层,处理通用内核态和用户态故障日志抓取和保存。
      
      Close #I3NN7V
      Signed-off-by: Nqidechun <qidechun@huawei.com>
      425975e4
  13. 01 7月, 2021 1 次提交
  14. 26 6月, 2021 1 次提交
    • H
      feat: 基于汇编实现内核对用户态内存清零的功能 · 9db34075
      Haryslee 提交于
      背景:LOS_UserMemClear接口原有实现是通过在内核中
      申请一块堆内存并对其清零,调用copy_to_user来达到
      对用户态内存清零的目的,需要使用堆内存。
      修改方案:基于汇编实现内核对用户态内存清零的功能。
      
      close #I3XXT0
      
      Change-Id: I27cb1e45559cb75a9b330799fe427abd54f51c15
      Signed-off-by: NHaryslee <lihao189@huawei.com>
      9db34075
  15. 07 6月, 2021 1 次提交
    • F
      fix: codex clean · b5370af8
      Far 提交于
      1. 修复可能对NULL指针解引用的场景
      2. 将不修改内容的指针入参修改为const
      3. 对getpgrp的返回值进行校验后再使用
      4. 修复了局部变量未初始化的问题
      
      Close #I3UOFN
      Signed-off-by: NFar <yesiyuan2@huawei.com>
      b5370af8
  16. 05 6月, 2021 1 次提交
  17. 24 5月, 2021 1 次提交
    • Z
      fix: 解决kill进程时无法保证进程的已持有的内核资源合理释放. · cf89f016
      zhushengle 提交于
      背景: 当前信号实现原理是在系统调用结束和中断结束时检查是否有信号处理,
            如果有信号处理就切去处理信号,信号处理结束后回来继续按原来流程执行。
      问题:当用户态线程在执行系统调用或缺页异常时,运行在内核态,如果此时有信
            号需要处理,且该线程已经持有了部分内核资源(如:锁,内存等), 此时如
            果有中断发生,则在中断结束时,就会去处理该信号,此时用户态线程持有
            了内核未释放的资源跑到了用户态去运行,如果该线程在用户态出现问题,
            那么它持有的内核资源就无法被释放了。
      方案:用户态线程在执行系统调用和缺页异常时暂时屏蔽信号,防止此时有中断去
            处理信号,等系统调用结束或缺页异常结束时再去处理信号。
      解决的问题:
        1. 执行系统调用或缺页异常时屏蔽信号,防止中断去处理信号
        2.解决无法kill 因为用户态的锁、ipc等阻塞的用户态线程
        3.进程退出方式转变为: 依次通过kill去杀死该进程的所有线程
      
      Close #I3S0N0
      
      Change-Id: I0c48b9c89382826191b8a9326c71b57ba84124c2
      cf89f016
  18. 20 5月, 2021 1 次提交
  19. 14 5月, 2021 1 次提交
  20. 11 5月, 2021 2 次提交
  21. 06 5月, 2021 1 次提交
  22. 30 4月, 2021 1 次提交
  23. 26 4月, 2021 3 次提交
  24. 25 4月, 2021 2 次提交
  25. 23 4月, 2021 1 次提交
  26. 19 4月, 2021 2 次提交
  27. 16 4月, 2021 1 次提交
  28. 09 4月, 2021 2 次提交
  29. 07 4月, 2021 2 次提交
  30. 02 4月, 2021 2 次提交
    • L
      IssueNo: #I3EPPI · 3fe7ec02
      likailong 提交于
      Description: platform directory refactoring
      Sig: kernel
      Feature or Bugfix: Feature
      Binary Source: No
      3fe7ec02
    • L
      IssueNo: #I3EPPI · d8f89448
      likailong 提交于
      Description: platform directory refactoring
      Sig: kernel
      Feature or Bugfix: Feature
      Binary Source: No
      d8f89448
  31. 31 3月, 2021 1 次提交
    • Y
      IssueNo:#I3EH1L · 25ab07f1
      YOUR_NAME 提交于
      Description:Fix the bug that the code segment and read-only segment can be modified in the uncache mapping area.
      Sig:liteos_a
      Feature or Bugfix:Bugfix
      Binary Source:No
      
      Change-Id: I030489b240d5bcbe088046392d566648fde85f0a
      25ab07f1