1. 09 3月, 2022 1 次提交
    • Y
      fix: 修复3.1源码检视的问题 · 9a030d69
      yinjiaming 提交于
      【背景】
      3.1 代码检视过程中有一些问题需要修复
      
      【修改方案】
      修改了失效的文档链接,更改了一些非可执行文件的权限
      
      【影响】
      对现有的产品编译不会有影响。
      Signed-off-by: Nyinjiaming <yinjiaming@huawei.com>
      Change-Id: If87ac9a3e17ba679f4712552f5a89cc13349287e
      9a030d69
  2. 27 1月, 2022 1 次提交
  3. 21 1月, 2022 1 次提交
    • Z
      feat: 调度相关模块间依赖优化 · 0e3936c4
      zhushengle 提交于
      背景:
          调度、线程、软件定时器、sortlink、percpu、异常、workqueue模块相互耦合,存在很多不属于本模块的实现,
      导致这几个模块间依赖混乱、且到处引用其它模块的内部成员。
      
      方案描述:
          解决上述依赖混乱的问题,为后续调度框架打基础,优化后依赖关系:
      
                                                                    | ---> los_swtmr_pri.h --> workqueue
      los_sortlink_pri.h: ---> los_sched_pri.h --> los_task_pri.h -->
         作为基础算法                                               | ---> ipc
      (现在为双向链表),
      做到功能最小化,
      便于后续其它算法替换
      
      调度框架大体方案描述:
      
      1.cpu run queue ----> 任务延时队列
      
                                               |---- 调度队列
                         |----  EDF        --->
                         |                     |---- 方法(Delay、Suspend、Resume、EntReadyQue、Exit等)
                         |
                         |                     |---- 调度队列
      2.task ---> 调度策略----> SCHED_RR   --->
                         |                     |---- 方法(Delay、Suspend、Resume、EntReadyQue、Exit等)
                         |
                         |                     |---- 调度队列
                         |----> SCHED_IDLE --->
                                               |---- 方法(Delay、Suspend、Resume、EntReadyQue、Exit等)
      
      Close #I4RPRW
      Signed-off-by: Nzhushengle <zhushengle@huawei.com>
      Change-Id: Ia54dc1b8a4801a225a52e40555490c1dce0bd75e
      0e3936c4
  4. 20 1月, 2022 1 次提交
    • H
      chore: kernel部件化 · 1ecda9c0
      Hongjin Li 提交于
      1、添加HPM包描述文件bundle.json
      2、依赖的三方开源软件,由直接引用路径,改为import对应的gni文件,引用变量
      Signed-off-by: NHongjin Li <lihongjin1@huawei.com>
      Change-Id: Ice783c19a477626d422a37faf3d420c4965f8ea6
      1ecda9c0
  5. 08 1月, 2022 1 次提交
    • H
      fix: MMU竞态问题修复 · 748e0d8f
      Haryslee 提交于
      背景:同一个进程的多个线程读写同一个PTE时,由于PTE无保护,存在竞态问题。
      方案:新增spinlock保护PTE,包括大锁跟小锁。大锁:一个进程只有一个spinlock锁,多个线程
      读写PTE时竞争一把锁,锁的内存占用小,但系统性能降低;小锁:每个页表持有一把spinlock,
      由于锁是page结构体的一个字段,内存消耗较大,但是相对大锁性能较优。系统默认使用大锁,用
      户可根据具体需要配置使用大锁还是小锁。
      
      close #I2WARC
      Signed-off-by: NHaryslee <lihao189@huawei.com>
      Change-Id: I5612eeac1f65507160035eae16af61f285182eda
      748e0d8f
  6. 07 1月, 2022 2 次提交
  7. 17 12月, 2021 1 次提交
  8. 30 11月, 2021 1 次提交
  9. 29 11月, 2021 1 次提交
    • Z
      feat: 支持L1 低功耗框架 · 64e49aba
      zhushengle 提交于
      方案描述:
         和L0保持一致,上层通过proc文件系统操作:
         power_mode  支持的低功耗模式,通过对该文件进行write操作可以设置低功耗模式
         power_count powermanager模块通过对该文件操作,和内核进行交互,简要流程如下:
           while (1) {
             open  // 打开该文件
             read  // 使powermanager低功耗任务常阻塞,当系统无任何模块持锁时,会唤醒该任务
             write // 进行低功耗流程
             close // 关闭该文件
           }
         power_lock    write该文件,持锁
         power_unlock  writw该文件,释放锁
      
      Close #I4JSO
      
      Change-Id: I73fcdeeb5e2039484b3351a81b46a0892b349fe9
      Signed-off-by: Nzhushengle <zhushengle@huawei.com>
      64e49aba
  10. 27 11月, 2021 1 次提交
    • L
      feat: L0~L1 支持Lms · e748fdbe
      LiteOS2021 提交于
      1.【需求描述】:
         支持内核态和用户态堆内存非法访问检测,包括:越界访问、double free、释放后使用;支持libc常用高频函数内存检测;支持安全函数内存检测;读写检测可配可裁剪。
      2.【方案描述】:
         L0 ~ L1:
         (1).影子内存映射与标记
         (2).编译器使能-fsanitize=kernel-address 自动插桩检测点
         (3).实时校验影子内存的合法性;
         (4).错误访问打印回溯栈
      
      BREAKING CHANGE: 新增支持API:
      
      LOS_LmsCheckPoolAdd使能检测指定内存池
      LOS_LmsCheckPoolDel不检测指定内存池
      LOS_LmsAddrProtect为指定内存段上锁,不允许访问
      LOS_LmsAddrDisableProtect去能指定内存段的访问保护
      
      Close #I4HYAV
      Signed-off-by: NLiteOS2021 <dinglu@huawei.com>
      Change-Id: Id8e5c890656da9edc4a22227e6a3c32205c024ce
      e748fdbe
  11. 16 11月, 2021 1 次提交
  12. 15 11月, 2021 1 次提交
    • L
      fix: A核代码静态告警定期清理 · 9ba725c3
      lnlan 提交于
      【背景】A核代码静态告警定期清理
      
      【修改方案】
      1,根据codex等工具分析结果,进行必要的规范等问题修改
      
      【影响】
      对现有的产品编译不会有影响。
      
      re #I4I0O8
      Signed-off-by: Nwangchen <253227059@qq.com>
      9ba725c3
  13. 10 11月, 2021 1 次提交
  14. 06 11月, 2021 1 次提交
  15. 04 11月, 2021 1 次提交
  16. 02 11月, 2021 2 次提交
  17. 29 10月, 2021 1 次提交
  18. 28 10月, 2021 1 次提交
  19. 22 10月, 2021 1 次提交
  20. 14 10月, 2021 1 次提交
  21. 11 10月, 2021 1 次提交
  22. 30 9月, 2021 2 次提交
  23. 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
  24. 27 9月, 2021 1 次提交
  25. 18 9月, 2021 1 次提交
  26. 14 9月, 2021 1 次提交
  27. 13 9月, 2021 1 次提交
  28. 08 9月, 2021 1 次提交
    • A
      refactor: 内核目录结构整理 · 33d0c1bd
      arvinzzz 提交于
      1. 原kernel/common目录下属于内核拓展组件,统一移入kernel/extend管理
      2. Kconfig分层,各模块自己的配置放到自己目录下管理
      3. 原platform下不属于平台的公共代码抽到kernel/common下,只留板级链接脚本和一些编译脚本指向device目录下触发平台相关的编译
      4. 对外公共头文件统一抽到对外include路径
      5. 废弃宏,头文件清理
      
      close: #I48KI4
      Signed-off-by: Narvinzzz <zhaotianyu9@huawei.com>
      Change-Id: I0cf5ea81c92a8fa7b113da9cbdc8b7bc935f5aae
      33d0c1bd
  29. 07 9月, 2021 1 次提交
    • G
      fix: dyload open close failed · 5e87d8c1
      Guangyao Ma 提交于
      本次提交修复内核加载器,异常情况分支的一个bug:mksh通过exec命令(mksh内置命令
      ,正常情况下,该命令成功执行会复用mksh进程空间,拉起新的指定进程)。但是如果
      进程没有成功加载的情况下,内核加载器的异常分支会错误释放mksh的fd句柄。最终导致
      下次拉起其他进程时(fork + exec方式),新的进程会继承fd,映射了早就释放的sysfd
      ,此时的sysfd可能已经被复用,issue场景下这个sysfd被加载过程中打开的libc.so占用
      ,exec时会释放procfd->sysfd(错误的映射关系),最终新进程libc.so被关闭。
      导致内核崩溃。
      
      close #I452Z7
      Signed-off-by: NGuangyao Ma <guangyao.ma@outlook.com>
      Change-Id: Ifca809f88b5ffcfb879dc5520d1f6adf5cf92bcd
      5e87d8c1
  30. 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
  31. 30 8月, 2021 1 次提交
  32. 22 8月, 2021 1 次提交
  33. 11 8月, 2021 1 次提交
    • G
      feat(vfs): vfs支持FD_CLOEXEC标记 · 27dca4d8
      Guangyao Ma 提交于
      首先,POSIX规范规定文件描述符需要支持close-on-exec属性,修改前的vfs不支持close-on-exec,当exec系列函数执行时,进程所有的文件将会被关闭(0,1,2也重新被打开)。但是,系统有些时候是不能在exec时关闭全部文件的,例如在执行exec之前,就需要重定向进程的某些文件描述符时(使用dup2),就希望该文件不被关闭,继续保持重定向属性,shell执行进程并重定向其标准输出到文件,这是我们经常做的事情。
      
      BREAKING CHANGE:
      执行exec类函数后,进程拥有的文件描述符情况发生变化:修改前,默认关闭所有的进程文件描述符,0,1,2重新打开;修改后,除非文件描述符拥有FD_CLOEXEC标记,否则该描述符不会被关闭。
      
      re #I3U81W
      
      Change-Id: I54e841ac88e9835ec23e97de0cbc906c4e11f5a4
      Signed-off-by: NGuangyao Ma <guangyao.ma@outlook.com>
      27dca4d8
  34. 10 8月, 2021 1 次提交
    • H
      fix: 合并进程栈两个地址连续的region · 42f374dd
      Haryslee 提交于
      背景:进程加载的时候,先预申请一个页用作参数拷贝,另外通过mmap方式申请
      额外的虚拟栈空间,此时便有两个地址连续的区间。
      方案:新增内部接口OsStackAlloc,用于申请一个连续的虚拟地址区间,并对其
      中指定区间做物理内存的映射。
      
      close #I43QYJ
      Signed-off-by: NHaryslee <lihao189@huawei.com>
      Change-Id: I224cca3671c42a94c2f74b2da5a11403849e33d3
      42f374dd
  35. 02 8月, 2021 1 次提交
  36. 22 7月, 2021 1 次提交
  37. 21 7月, 2021 1 次提交