Xilkernel API函数介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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初始值