Posix 接口注释

    百图画鸿蒙 + 百文说内核 + 百万注源码  => 挖透鸿蒙内核源码
    鸿蒙研究站 | http://weharmonyos.com (国内)
              | https://weharmony.github.io (国外)
    oschina | https://my.oschina.net/weharmony
    博客园 | https://www.cnblogs.com/weharmony/
    知乎 | https://www.zhihu.com/people/weharmonyos
    csdn | https://blog.csdn.net/kuangyufei
    51cto | https://harmonyos.51cto.com/column/34
    掘金 | https://juejin.cn/user/756888642000808
    公众号 | 鸿蒙研究站 (weharmonyos)
上级 cbda0b9a
......@@ -64,8 +64,8 @@
**任务管理**
* [v21.07 鸿蒙内核源码分析(任务控制块) | 内核最重要的概念](http://weharmonyos.com/blog/21.html)
* [v22.05 鸿蒙内核源码分析(并发并行) | 如何搞清楚它俩区分](http://weharmonyos.com/blog/22.html)
* [v23.03 鸿蒙内核源码分析(就绪队列) | 内核调度也需要排队](http://weharmonyos.com/blog/23.html)
* [v24.08 鸿蒙内核源码分析(调度机制) | 任务是如何被调度执行](http://weharmonyos.com/blog/24.html)
* [v23.03 鸿蒙内核源码分析(就绪队列) | 美好的事物永远值得等待](http://weharmonyos.com/blog/23.html)
* [v24.08 鸿蒙内核源码分析(调度机制) | 公平是相对](http://weharmonyos.com/blog/24.html)
* [v25.05 鸿蒙内核源码分析(任务管理) | 如何管理任务池](http://weharmonyos.com/blog/25.html)
* [v26.03 鸿蒙内核源码分析(用栈方式) | 谁来提供程序运行场地](http://weharmonyos.com/blog/26.html)
* [v27.02 鸿蒙内核源码分析(软件定时器) | 内核最高级任务竟是它](http://weharmonyos.com/blog/27.html)
......@@ -75,9 +75,9 @@
**内存管理**
* [v31.02 鸿蒙内核源码分析(内存规则) | 内存管理到底在管什么](http://weharmonyos.com/blog/31.html)
* [v32.04 鸿蒙内核源码分析(物理内存) | 怎么管理物理内存](http://weharmonyos.com/blog/32.html)
* [v33.04 鸿蒙内核源码分析(虚拟内存) | 虚拟内存全景图是怎样](http://weharmonyos.com/blog/33.html)
* [v34.03 鸿蒙内核源码分析(虚实映射) | 映射真是个好东西](http://weharmonyos.com/blog/34.html)
* [v32.04 鸿蒙内核源码分析(物理内存) | 真实的可不一定精彩](http://weharmonyos.com/blog/32.html)
* [v33.04 鸿蒙内核源码分析(虚拟内存) | 虚拟的也是真实](http://weharmonyos.com/blog/33.html)
* [v34.03 鸿蒙内核源码分析(虚实映射) | 映射是种伟大的思想](http://weharmonyos.com/blog/34.html)
* [v35.03 鸿蒙内核源码分析(静态分配) | 内存有哪些分配方式](http://weharmonyos.com/blog/35.html)
* [v36.01 鸿蒙内核源码分析(动态分配) | 正在制作中 ... ](http://weharmonyos.com/blog/36.html)
* [v37.04 鸿蒙内核源码分析(原子操作) | 谁在为完整性保驾护航](http://weharmonyos.com/blog/37.html)
......@@ -105,10 +105,10 @@
* [v55.02 鸿蒙内核源码分析(文件概念) | 为什么说一切皆是文件](http://weharmonyos.com/blog/55.html)
* [v56.04 鸿蒙内核源码分析(文件故事) | 用图书管理说文件系统](http://weharmonyos.com/blog/56.html)
* [v57.06 鸿蒙内核源码分析(索引节点) | 谁是文件系统最重要的概念](http://weharmonyos.com/blog/57.html)
* [v58.02 鸿蒙内核源码分析(VFS) | 文件系统是个大家庭](http://weharmonyos.com/blog/58.html)
* [v58.02 鸿蒙内核源码分析(VFS) | 文件系统的话事人](http://weharmonyos.com/blog/58.html)
* [v59.04 鸿蒙内核源码分析(文件句柄) | 你为什么叫句柄](http://weharmonyos.com/blog/59.html)
* [v60.07 鸿蒙内核源码分析(根文件系统) | 谁先挂到`/`谁就是根总](http://weharmonyos.com/blog/60.html)
* [v61.05 鸿蒙内核源码分析(挂载机制) | 为何文件系统需要挂载](http://weharmonyos.com/blog/61.html)
* [v60.07 鸿蒙内核源码分析(根文件系统) | 谁先挂到`/`谁就是老大](http://weharmonyos.com/blog/60.html)
* [v61.05 鸿蒙内核源码分析(挂载机制) | 谁根逐流不掉队](http://weharmonyos.com/blog/61.html)
* [v62.05 鸿蒙内核源码分析(管道文件) | 如何降低数据流动成本](http://weharmonyos.com/blog/62.html)
* [v63.03 鸿蒙内核源码分析(文件映射) | 正在制作中 ... ](http://weharmonyos.com/blog/63.html)
* [v64.01 鸿蒙内核源码分析(写时拷贝) | 正在制作中 ... ](http://weharmonyos.com/blog/64.html)
......@@ -116,10 +116,10 @@
**软硬相接**
* [v65.03 鸿蒙内核源码分析(CPU结构) | 正在制作中 ... ](http://weharmonyos.com/blog/65.html)
* [v66.01 鸿蒙内核源码分析(协处理器) | 正在制作中 ... ](http://weharmonyos.com/blog/66.html)
* [v67.05 鸿蒙内核源码分析(工作模式) | 程序界的韦小宝是谁](http://weharmonyos.com/blog/67.html)
* [v68.01 鸿蒙内核源码分析(异常处理) | 正在制作中 ... ](http://weharmonyos.com/blog/68.html)
* [v69.06 鸿蒙内核源码分析(寄存器) | 讲真 全宇宙只佩服它](http://weharmonyos.com/blog/69.html)
* [v70.03 鸿蒙内核源码分析(多核管理) | 整个内核是一个死循环](http://weharmonyos.com/blog/70.html)
* [v67.05 鸿蒙内核源码分析(工作模式) | 羡慕韦小宝这么多老婆](http://weharmonyos.com/blog/67.html)
* [v68.01 鸿蒙内核源码分析(异常处理) | 不如意事十之八九 ](http://weharmonyos.com/blog/68.html)
* [v69.06 鸿蒙内核源码分析(寄存器) | 真牛把世界玩出花来了](http://weharmonyos.com/blog/69.html)
* [v70.03 鸿蒙内核源码分析(多核管理) | 真正并发的基础](http://weharmonyos.com/blog/70.html)
* [v71.05 鸿蒙内核源码分析(中断概念) | 海公公的日常工作](http://weharmonyos.com/blog/71.html)
* [v72.04 鸿蒙内核源码分析(中断管理) | 没中断太可怕](http://weharmonyos.com/blog/72.html)
* [v73.01 鸿蒙内核源码分析(移值适配) | 正在制作中 ... ](http://weharmonyos.com/blog/73.html)
......@@ -241,4 +241,6 @@
![](https://gitee.com/weharmonyos/resources/raw/master/common/so1so.png)
道阻且长,行则将至,原创不易,欢迎转载,请注明出处。
道阻且长,行则将至,感谢支持与鼓励。前往 [>> 捐助作者 ](http://weharmonyos.com/donate.html)
原创不易,欢迎转载,请注明出处。
......@@ -62,7 +62,7 @@ void *calloc(size_t nitems, size_t size)
* If ptr points to a memory block that was not allocated with calloc, malloc,
* or realloc, or is a space that has been deallocated, then the result is undefined.
*/
/// 释放ptr所指向的内存空间
void free(void *ptr)
{
if (ptr == NULL) {
......@@ -75,8 +75,9 @@ void free(void *ptr)
/*
* Allocates the requested memory and returns a pointer to it. The requested
* size is size bytes. The value of the space is indeterminate.
* 分配请求的内存并返回指向它的指针。 请求的大小是 size 字节。 内存值是不确定的。
*/
/// 动态分配内存块大小
void *malloc(size_t size)
{ /*lint !e31 !e10*/
if (size == 0) {
......@@ -85,7 +86,8 @@ void *malloc(size_t size)
return LOS_KernelMalloc((UINT32) size);
}
/// 分配请求的内存并返回指向它的指针。 请求的大小是 size 字节。 内存值是0。
/// 原来 zalloc的含义是 zero malloc
void *zalloc(size_t size)
{ /*lint !e10*/
void *ptr = NULL;
......@@ -104,6 +106,7 @@ void *zalloc(size_t size)
/*
* allocates a block of size bytes whose address is a multiple of boundary.
* The boundary must be a power of two!
* 分配一个大小字节的块,其地址是边界的倍数。边界必须是 2 的幂!
*/
void *memalign(size_t boundary, size_t size)
......@@ -127,8 +130,14 @@ void *memalign(size_t boundary, size_t size)
* undefined. If the new space cannot be allocated, then the contents pointed
* to by ptr are unchanged. If size is zero, then the memory block is completely
* freed.
* 尝试调整先前通过调用 malloc 或 calloc 分配的 ptr 指向的内存块的大小。
* ptr 指向的内容不变。 如果 size 的值大于块的先前大小,则附加字节具有不确定的值。
* 如果 size 的值小于块的先前大小,则释放块末尾的字节差。 如果 ptr 为 null,
* 则它的行为类似于 malloc。 如果 ptr 指向未使用 calloc 或 malloc 分配的内存块,
* 或者是已释放的空间,则结果未定义。 如果无法分配新空间,则 ptr 指向的内容不变。
* 如果大小为零,则内存块被完全释放。
*/
/// 重分配内存
void *realloc(void *ptr, size_t size)
{
if (ptr == NULL) {
......
......@@ -482,7 +482,7 @@ STATIC INT32 GetMqueueAttr(struct mq_attr *defaultAttr, struct mq_attr *attr)
}
return 0;
}
/// 打开一个具有指定名称的已有消息队列或创建一个新的消息队列
mqd_t mq_open(const char *mqName, int openFlag, ...)
{
struct mqarray *mqueueCB = NULL;
......@@ -546,7 +546,7 @@ OUT:
(VOID)pthread_mutex_unlock(&g_mqueueMutex);
return mqFd;
}
/// 用于关闭具有指定描述符的消息队列
int mq_close(mqd_t personal)
{
INT32 ret = -1;
......@@ -652,7 +652,7 @@ int mq_getsetattr(mqd_t mqd, const struct mq_attr *new, struct mq_attr *old)
}
return OsMqSetAttr(mqd, new, old);
}
/// 删除具有指定名称的消息队列
int mq_unlink(const char *mqName)
{
INT32 ret = 0;
......@@ -756,6 +756,7 @@ static void MqSendNotify(struct mqarray *mqueueCB)
errno = errcode; \
goto ERROUT; \
}
/// 用于在预定时间将具有指定内容和长度的消息放入具有描述符的消息队列中
int mq_timedsend(mqd_t personal, const char *msg, size_t msgLen, unsigned int msgPrio,
const struct timespec *absTimeout)
{
......@@ -797,7 +798,7 @@ ERROUT_UNLOCK:
ERROUT:
return -1;
}
/// 用于从具有指定描述符的消息队列消息中获取具有指定消息内容和长度的消息
ssize_t mq_timedreceive(mqd_t personal, char *msg, size_t msgLen, unsigned int *msgPrio,
const struct timespec *absTimeout)
{
......@@ -853,13 +854,14 @@ ERROUT_UNLOCK:
ERROUT:
return -1;
}
/// 将具有指定内容和长度的消息放入具有指定描述符的消息队列中
/// 例如: 软总线适配层 WriteMsgQue - mq_send
/* not support the prio */
int mq_send(mqd_t personal, const char *msg_ptr, size_t msg_len, unsigned int msg_prio)
{
return mq_timedsend(personal, msg_ptr, msg_len, msg_prio, NULL);
}
/// 用于从具有指定描述符的消息队列中删除最老的消息,并将其放入msg_ptr所指向的缓冲区中
ssize_t mq_receive(mqd_t personal, char *msg_ptr, size_t msg_len, unsigned int *msg_prio)
{
return mq_timedreceive(personal, msg_ptr, msg_len, msg_prio, NULL);
......
......@@ -72,7 +72,7 @@ STATIC INLINE INT32 CondInitCheck(const pthread_cond_t *cond)
}
return 0;
}
///获取条件变量的范围
///获取条件变量的范围,目前只支持获取PTHREAD_PROCESS_PRIVATE条件变量属性
int pthread_condattr_getpshared(const pthread_condattr_t *attr, int *shared)
{
if ((attr == NULL) || (shared == NULL)) {
......
......@@ -56,7 +56,7 @@ int sem_init(sem_t *sem, int shared, unsigned int value)//初始化信号量,H
return 0;
}
///销毁指定的无名信号量
///销毁指定的信号量
int sem_destroy(sem_t *sem)
{
UINT32 ret;
......
......@@ -39,12 +39,12 @@ char *getenv(const char *name)
{
return NULL;
}
/// 初始化随机数生成器
void srand(unsigned s)
{
return srandom(s);
}
/// 生成伪随机数
int rand(void)
{
return random();
......@@ -63,7 +63,7 @@ void exit(int status)
errno = ENOSYS;
while (1);
}
/// 中止线程执行
void abort(void)
{
LOS_Panic("System was being aborted\n");
......
git add -A
git commit -m ' 确定百篇博客目录结构,重新整理文档 .
git commit -m ' Posix 接口注释
百图画鸿蒙 + 百文说内核 + 百万注源码 => 挖透鸿蒙内核源码
鸿蒙研究站 | http://weharmonyos.com (国内)
| https://weharmony.github.io (国外)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册