Xilkernel API函数介绍

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Xilkernel是Xilinx公司提供的用于EDK系统的小型、模块化的操作系统,支持MicroBlaze、PowerPC405以及PowerPC440处理器。支持可移植操作系统接口(POSIX)。

Xilkernel功能函数包括:线程管理、信号量、消息队列、共享内存、互斥锁、动态内存管理、软件定时、用户层中断处理API等几个方面。

-------------------------------------------------------------

1、线程管理包括如下API函数

Xilkernel支持基本的POSIX线程操作,需要配合线程设置共同作用。使用该类函数需要包含头文件pthread.h。

int pthread_create(pthread_t thread, pthread_attr_t* att,

void*(*start_func)(void*),void* param)

参数:thread是存储线程ID的地址,attr存储线程属性结构体的地址,

start_func线程函数名,param线程函数参数指针。

返回:0创建成功,-1线程ID无效,EINVAL无效属性,EAGAIN资源不足

创建线程并执行。

void pthread_exit(void *value_ptr)

参数:线程返回值的指针

结束一个线程,但这个函数并不是必须的。需要用到返回值时才使用。

int pthread_join(pthread_t thread, void **value_ptr)

参数:thread线程ID,value_ptr线程返回值地址指针

返回:0成功,ESRCH无效线程,EINVAL线程返回值已经被使用

停止当前线程等待目标线程执行完成并返回值。

pthread_t pthread_self(void)

返回:本线程ID

int pthread_detach(pthread_t target)

返回:0成功,ESRCH线程未创建

回收线程存储资源,但并不会结束线程。

int pthread_equal(pthread_t t1, pthread_t t2)

参数:t1和t2两个待比较线程的ID

返回:1两线程是同一线程,0其它情况

int pthread_getschedparam(pthread_t thread, int *policy, struct sched_param *param)

参数:thread线程ID,policy全局调度策略指针,param调度策略结构体地址

返回:0成功,ESRCH线程无效,EINVAL调度参数无效

函数返回个别线程的调度策略。

int pthread_setschedparam(pthread_t thread, int policy, const struct sched_param *param)

参数:thread线程ID,policy忽略,param调度策略结构体地址

返回:0成功,ESRCH线程无效,EINVAL调度参数无效

函数返回个别线程的调度策略。

int pthread_attr_init(pthread_attr_t* attr)

参数:线程属性指针

返回:0成功,1未成功,EINVAL属性无效

按照默认设置初始化线程属性对象attr

int pthread_attr_destroy (pthread_attr_t* attr)

参数:线程属性指针

返回:0成功,EINVAL错误

函数销毁线程指针对象,设置成未定义值。

int pthread_attr_setdetachstate(pthread_attr_t* attr, int dstate)

参数:attr属性结构体,dstate要设置的状态

返回:0成功,EINVAL无效参数

设置线程状态

int pthread_attr_getdetachstate(pthread_attr_t* attr, int *dstate)

参数:attr属性结构体,dstate获取的状态地址

返回:0成功,EINVAL无效参数

获取线程状态:PTHREAD_CREATE_DETACHED或者PTHREAD_CREATE_JOINABLE

int pthread_attr_setschedparam(pthread_attr_t* attr, struct sched_param *schedpar)

参数:attr属性结构体,schedpar调度参数存储地址

返回:0成功,EINVAL无效参数,ENOTSUP无效调度参数

设置线程优先级,sched_param在sched.h文件中定义

int pthread_attr_getschedparam(pthread_attr_t* attr, struct

sched_param* schedpar)

参数:attr属性结构体,schedpar线程调度参数指针

返回:0成功,EINVAL无效参数

获取线程优先级。

int pthread_attr_setstack(const pthread_attr_t *attr, void *stackaddr, size_t stacksize)

参数:attr属性结构体,stacksize堆栈地址

返回:0成功,EINVAL堆栈设置不当

设置线程堆栈

int pthread_attr_getstack(const pthread_attr_t *attr, void **stackaddr, size_t *stacksize)

参数:attr属性结构体,stackaddr堆栈地址指针,stacksize堆栈空间以字节为单位

返回:0成功,EINVAL无效属性

获取线程的堆栈信息

pid_t get_currentPID(void)

返回:当前正在运行的线程或操作的ID

int kill(pid_t pid)

参数:pid线程或操作ID

返回:0成功,-1未成功

终止指定线程或操作

int process_status(pid_t pid, p_stat *ps)

参数:pid操作或线程ID,ps状态存储地址

返回:无

获取当前正在运行的县城或操作的状态

int xmk_add_static_thread(void* (*start_routine)(void *), int

sched_priority)

参数:start_routine线程函数,sched_priority优先级

返回:0成功,-1未成功

该函数将线程加入到启动或静态线程列表中,这个函数要在xilkernel_main()函数之前调用

int yield(void)

迫使处理器运行下一个准备好的线程或操作,当前线程或操作今日任务准备完毕队列,等待再次获取时间片运行。

-------------------------------------------------------------

2、信号量包括API函数如下

Xilkernel支持信号量操作,信号量提供高速的任务间同比和互斥机制,遵循POSIX。Xilkernel的信号量分为有名信号量和无名信号量量化总。有名信号量基于文件系统实现,无名信号量基于内存实现。信号量是实现进程间通信(IPC)的重要手段,使用该类函数需要包含头文件semaphore.h。

int sem_init(sem_t *sem, int pshared, unsigned value)

参数:sem信号量ID,pshared共享状态,value初始值

相关文档
最新文档