pull/4/head
eee 1 year ago
parent 6ff2b24e95
commit 7233f5d9a1

@ -0,0 +1,60 @@
# 以下主要是关于kernel/base/core部分代码的阅读
![Alt text](image.png)
根据这个项目的README文件介绍kernel部分的代码是有关内核实现的。而其中base文件下的内容主要是有关基础内核部分的内容。
## 一、 los_bitmap.c
基本概念
位操作是指对二进制数的bit位进行操作。程序可以设置某一变量为状态字状态中的每一bit位标志位可以具有自定义的含义。
使用场景
系统提供标志位的置1和清0操作可以改变标志位的内容同时还提供状态字中标志位
为1的最高位和最低位的功能。用户也可以对系统的寄存器进行位操作。
## 二、 los_process.c
基本概念 这段代码主要是用于处理进程的,包括子进程父进程等。
## 三、 los_smp.c
这段代码主要用于处理代码初始化
## 四、 los_sys.c
基本概念
软件定时器是基于系统Tick时钟中断且由软件来模拟的定时器。当经过设定的Tick数后会触发用户自定义的回调函数。
硬件定时器受硬件的限制,数量上不足以满足用户的实际需求。因此为了满足用户需求,提供更多的定时器,
软件定时器功能,支持如下特性:
创建软件定时器。
启动软件定时器。
停止软件定时器。
删除软件定时器。
获取软件定时器剩余Tick数。
可配置支持的软件定时器个数。
运作机制
软件定时器是系统资源,在模块初始化的时候已经分配了一块连续内存。
软件定时器使用了系统的一个队列和一个任务资源,软件定时器的触发遵循队列则,
先进先出。定时时间短的定时器总是比定时时间长的靠近队列头,满足优先触发准则。
软件定时器以Tick为基本计时单位当创建并启动一个软件定时器时HuaweiLiteOS会根据
当前系统Tick时间及设置的定时时长确定该定时器的到期Tick时间并将该定器控制结构挂入计时全局链表。
当Tick中断到来时在Tick中断处理函数中扫描软件定时器的计时全局链表查是否有定时器超时
若有则将超时的定时器记录下来。Tick中断处理函数结束后软件定时器任务先级为最高
被唤醒,在该任务中调用已经记录下来的定时器的回调函数。
## 五、 los_task.c
基本概念
从系统角度看任务是竞争系统资源的最小运行单元。任务可以使用或等待CPU、
使用内存空间等系统资源,并独立于其它任务运行。
任务模块可以给用户提供多个任务,实现任务间的切换,帮助用户管理业务程序流程。具有如下特性:
支持多任务。
一个任务表示一个线程。
抢占式调度机制,高优先级的任务可打断低优先级任务,低优先级任务必须在高优先级任务阻塞或结束后才能得到调度。
相同优先级任务支持时间片轮转调度方式。
共有32个优先级[0-31]最高优先级为0最低优先级为31。
## 六、 los_tick.c
系统时钟,是绝大部分部件工作的时钟源,也是其他所有外设的时钟的来源

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

@ -38,9 +38,11 @@
#define OS_BITMAP_WORD_MASK ~0UL
/* find first zero bit starting from LSB */
STATIC INLINE UINT16 Ffz(UINTPTR x)
{
return __builtin_ffsl(~x) - 1;
// 返回第一个零位的下标
}
VOID LOS_BitmapSet(UINT32 *bitmap, UINT16 pos)

Loading…
Cancel
Save