📄 fsu_pthread.h
字号:
any_t arg; /* argument list to above function */ any_t result; /* return value of above function */ any_t key[_POSIX_DATAKEYS_MAX]; /* thread specific data */ pthread_cleanup_t cleanup_top; /* stack of cleanup handlers */ pthread_attr_t attr; /* attributes */ int base_prio; /* Base priority of thread */ int max_ceiling_prio; /* Max of ceiling prio among locked mutexes */ int new_prio; /* New Priority */ pthread_suspend_t suspend; /* save area for thread suspend */#if defined(IO_NP) && !defined(__FreeBSD__) && !defined(__dos__)#if !defined(__linux__) && !defined(_M_UNIX) volatile struct aio_result_t resultp;/*result of asynchronous I/O ops*/#endif /* !__linux__ && !_M_UNIX */#ifdef USE_POLL_NP int wait_on_select; /* more information in fds */ int nfds; /* pertinent file desc. set width */ int how_many; /* how many amoung 0 .. width -1 */ struct pollfd* fds; /* poll events */#else /* !USE_POLL_NP */ int wait_on_select; /* more information in fds */ int width; /* pertinent file desc. set width */ int how_many; /* how many amoung 0 .. width -1 */ fd_set readfds; /* read file descriptor set */ fd_set writefds; /* write file descriptor set */ fd_set exceptfds; /* except. file descriptor set */#endif /* !USE_POLL_NP */#endif /* IO_NP && !__FreeBSD__ && !__dos__ */#ifdef STAND_ALONE_NP pthread_func_t timer_func; /* function to be called on timeout*/ any_t timer_arg; /* arg of above function */ struct timespec tp; /* wake-up time */ int dummy; /* filler for stack alignment */#else /* !STAND_ALONE_NP */ struct timeval tp; /* wake-up time */#endif /* !STAND_ALONE_NP */} *pthread_t __attribute__((aligned(8)));#ifdef __FreeBSD__#define IO_SIZE_T size_t#elif defined (__dos__)#define IO_SIZE_T size_t#define SIGSUSPEND_CONST const#define SIGACTION_CONST const#define SIGPROCMASK_CONST const#define SIGWAIT_CONST const#define LONGJMP_CONST#define SIGLONGJMP_CONST#elif defined (__linux__)#define IO_SIZE_T size_t#elif defined (_M_UNIX)#define IO_SIZE_T size_t#else#if defined(__GNUC__) && defined(_PARAMS)#define IO_SIZE_T __SIZE_TYPE__/* * for gcc 2.5.8 or before use: * #define IO_SIZE_T unsigned int */#define SIGSUSPEND_CONST#define SIGACTION_CONST const#define SIGPROCMASK_CONST const#define SIGWAIT_CONST const#define LONGJMP_CONST#define SIGLONGJMP_CONST#else/* * for older gcc, remove "const" for "SIGPROCMASK_CONST" */#define IO_SIZE_T size_t#define SIGSUSPEND_CONST const#define SIGACTION_CONST const#define SIGPROCMASK_CONST const#define SIGWAIT_CONST const#define LONGJMP_CONST#define SIGLONGJMP_CONST#endif#endif/******************************//* Thread Functions *//* Thread Attribute Functions *//******************************/#ifdef __cplusplusextern "C" {#endif extern pthread_t pthread_self _C_PROTOTYPE ((void));extern void pthread_init _C_PROTOTYPE ((void));extern void pthread_init_attr _C_PROTOTYPE ((pthread_attr_t *__attr));extern int pthread_create _C_PROTOTYPE((pthread_t *thread, pthread_attr_t *__attr, pthread_func_t __func, any_t __arg));extern int pthread_equal _C_PROTOTYPE((pthread_t __t1, pthread_t __t2));extern int pthread_detach _C_PROTOTYPE((pthread_t thread));extern int pthread_join _C_PROTOTYPE((pthread_t thread, any_t *__status));extern int sched_yield _C_PROTOTYPE((void));extern void pthread_exit _C_PROTOTYPE((any_t __status));extern int pthread_attr_init _C_PROTOTYPE((pthread_attr_t *__attr));extern int pthread_attr_destroy _C_PROTOTYPE((pthread_attr_t *__attr));extern int pthread_getschedparam _C_PROTOTYPE((pthread_t thread, int *__policy, struct sched_param *__param));extern int pthread_setschedparam _C_PROTOTYPE((pthread_t thread, int __policy, struct sched_param *__param));extern int pthread_attr_setstacksize _C_PROTOTYPE((pthread_attr_t *__attr, size_t __stacksize));extern int pthread_attr_getstacksize _C_PROTOTYPE((pthread_attr_t *__attr, size_t *__stacksize));extern int pthread_attr_setscope _C_PROTOTYPE((pthread_attr_t *__attr, int __contentionscope));extern int pthread_attr_setinheritsched _C_PROTOTYPE((pthread_attr_t *__attr, int __inheritsched));extern int pthread_attr_setschedpolicy _C_PROTOTYPE((pthread_attr_t *__attr, int __policy));extern int pthread_attr_setschedparam _C_PROTOTYPE((pthread_attr_t *__attr, struct sched_param *__param));extern int pthread_attr_getscope _C_PROTOTYPE((pthread_attr_t *__attr, int *__contentionscope));extern int pthread_attr_getinheritsched _C_PROTOTYPE((pthread_attr_t *__attr, int *__inheritsched));extern int pthread_attr_getschedpolicy _C_PROTOTYPE((pthread_attr_t *__attr, int *__policy));extern int pthread_attr_getschedparam _C_PROTOTYPE((pthread_attr_t *__attr, struct sched_param *__param));extern int pthread_attr_getstarttime_np _C_PROTOTYPE((pthread_attr_t *__attr, struct timespec *__tp));extern int pthread_attr_setstarttime_np _C_PROTOTYPE((pthread_attr_t *__attr, struct timespec *__tp));extern int pthread_attr_getdeadline_np _C_PROTOTYPE((pthread_attr_t *__attr, struct timespec *__tp));extern int pthread_attr_setdeadline_np _C_PROTOTYPE((pthread_attr_t *__attr, struct timespec *__tp, pthread_func_t func));extern int pthread_attr_getperiod_np _C_PROTOTYPE((pthread_attr_t *__attr, struct timespec *__tp));extern int pthread_attr_setperiod_np _C_PROTOTYPE((pthread_attr_t *__attr, struct timespec *__tp, pthread_func_t func));extern int pthread_key_create _C_PROTOTYPE((pthread_key_t *__key, void (*__func) (any_t __value)));extern int pthread_key_delete _C_PROTOTYPE((pthread_key_t __key));extern int pthread_setspecific _C_PROTOTYPE((pthread_key_t __key, any_t __value));extern any_t pthread_getspecific _C_PROTOTYPE((pthread_key_t __key));extern void pthread_cleanup_push _C_PROTOTYPE((void (*__func) (any_t __value), any_t __arg));extern void pthread_cleanup_pop _C_PROTOTYPE((int __execute));extern int sched_get_priority_max _C_PROTOTYPE((int __policy));extern int sched_get_priority_min _C_PROTOTYPE((int __policy));extern int pthread_attr_setdetachstate _C_PROTOTYPE((pthread_attr_t *__attr, int __detachstate));extern int pthread_attr_getdetachstate _C_PROTOTYPE((pthread_attr_t *__attr, int *__detachstate));extern int pthread_once _C_PROTOTYPE((pthread_once_t *__once_c, void (*__func) (void)));/* * implementation-defined extensions */extern void pthread_setsigcontext_np _C_PROTOTYPE((struct context_t *__scp, jmp_buf __env, int __val));extern int pthread_lock_stack_np _C_PROTOTYPE((pthread_t __p));extern int pthread_suspend_np _C_PROTOTYPE((pthread_t __t));extern int pthread_resume_np _C_PROTOTYPE((pthread_t __t));extern void pthread_mutex_dbgstart_np _C_PROTOTYPE((pthread_mutex_t *__mutex));extern void pthread_mutex_dbgstop_np _C_PROTOTYPE((pthread_mutex_t *__mutex));extern void pthread_cond_dbgstart_np _C_PROTOTYPE((pthread_cond_t *__mutex));extern void pthread_cond_dbgstop_np _C_PROTOTYPE((pthread_cond_t *__mutex)); /******************************//* Signal Functions *//******************************/extern int sigwait _C_PROTOTYPE((SIGWAIT_CONST sigset_t *__set, int *__sig));extern int sigtimedwait _C_PROTOTYPE((SIGWAIT_CONST sigset_t *__set, siginfo_t *info, const struct timespec *timeout));extern int sigprocmask _C_PROTOTYPE((int __how, SIGPROCMASK_CONST sigset_t *__set, sigset_t *__oset));extern int pthread_sigmask _C_PROTOTYPE((int __how, SIGPROCMASK_CONST sigset_t *__set, sigset_t *__oset));extern int sigpending _C_PROTOTYPE((sigset_t *__set));extern int sigsuspend _C_PROTOTYPE((SIGSUSPEND_CONST sigset_t *__set));extern int pause _C_PROTOTYPE((void));#ifdef __dos__/* we use a macro to rename these so we can still call the system functions, since we don't have system-call hooks under DJGPP. */#define raise(sig) pthread_dummy_raise(sig)#define sigprocmask(sig, set1, set2) pthread_dummy_sigprocmask(sig, set1, set2)#define sigsuspend(set) pthread_dummy_sigsuspend(set)#endif#if defined(M_UNIX)#undef raise#endifextern int raise _C_PROTOTYPE((int __sig));extern int pthread_kill _C_PROTOTYPE((pthread_t thread, int __sig));extern int sigqueue _C_PROTOTYPE((pid_t id, int __sig, const union p_sigval value));extern int pthread_cancel _C_PROTOTYPE((pthread_t thread));extern int pthread_setcancelstate _C_PROTOTYPE((int __state, int *__oldstate));extern int pthread_setcanceltype _C_PROTOTYPE((int __type, int *__oldtype));extern void pthread_testcancel _C_PROTOTYPE((void));extern int sigaction _C_PROTOTYPE((int __sig, SIGACTION_CONST struct sigaction *__act, struct sigaction *__oact));#if defined(__FreeBSD__) || defined(_M_UNIX) || defined(__linux__) || defined(__dos__)extern pthread_sighandler_t signal _C_PROTOTYPE((int __sig, pthread_sighandler_t handler));#else#if defined(SOLARIS_NP) && defined(__cplusplus)extern void (*signal(int, void (*)(int)))(int);#elseextern void (*signal())();#endif#endif/* yet to come...extern unsigned int alarm _C_PROTOTYPE((unsigned int __seconds));*/extern int nanosleep _C_PROTOTYPE((const struct timespec *__rqtp, struct timespec *__rmtp));extern unsigned int sleep _C_PROTOTYPE((unsigned int __seconds));extern int clock_gettime _C_PROTOTYPE((int __clock_id, struct timespec *__tp));extern int clock_settime _C_PROTOTYPE((int __clock_id, struct timespec *__tp));extern int clock_getres _C_PROTOTYPE((int __clock_id, struct timespec *__tp));/******************************//* Low-Level Functions *//******************************/#ifndef __dos__#ifdef setjmp#undef setjmp#endif#ifdef longjmp#undef longjmp#endif#ifdef sigsetjmp#undef sigsetjmp#endif#ifdef siglongjmp#undef siglongjmp#endif#endifextern int setjmp _C_PROTOTYPE((jmp_buf __env));extern void longjmp _C_PROTOTYPE((LONGJMP_CONST jmp_buf __env, int __val));extern int sigsetjmp _C_PROTOTYPE((sigjmp_buf __env, int __savemask));extern void siglongjmp _C_PROTOTYPE((SIGLONGJMP_CONST sigjmp_buf __env, int __val));/******************************//* leon lowlevel *//******************************/extern void pthreadleon_init_ticks _C_PROTOTYPE ((void)); /******************************//* I/O Functions *//******************************/extern int read _C_PROTOTYPE((int __fd, void *__buf, IO_SIZE_T __nbytes));extern int write _C_PROTOTYPE((int __fd, const void *__buf, IO_SIZE_T __nbytes));#ifdef __cplusplus} /* extern "C" */#endif#define PTHREAD_CANCELED (void *)-1#endif /* !_pthread_pthread_h */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -