📄 pthread.h.in
字号:
*/#define PTHREAD_ONCE_INIT 0/* * Mutex static initialization values. */enum pthread_mutextype { PTHREAD_MUTEX_DEFAULT = 1, PTHREAD_MUTEX_RECURSIVE, PTHREAD_MUTEX_NORMAL, PTHREAD_MUTEX_ERRORCHECK};/* * Mutex/CondVar/RWLock static initialization values. */#define PTHREAD_MUTEX_INITIALIZER (pthread_mutex_t)(NULL)#define PTHREAD_COND_INITIALIZER (pthread_cond_t)(NULL)#define PTHREAD_RWLOCK_INITIALIZER (pthread_rwlock_t)(NULL)/* * IEEE (``POSIX'') Std 1003.1 Second Edition 1996-07-12 *//* thread attribute routines */extern int pthread_attr_init(pthread_attr_t *);extern int pthread_attr_destroy(pthread_attr_t *);extern int pthread_attr_setinheritsched(pthread_attr_t *, int);extern int pthread_attr_getinheritsched(const pthread_attr_t *, int *);extern int pthread_attr_setschedparam(pthread_attr_t *, const struct sched_param *);extern int pthread_attr_getschedparam(const pthread_attr_t *, struct sched_param *);extern int pthread_attr_setschedpolicy(pthread_attr_t *, int);extern int pthread_attr_getschedpolicy(const pthread_attr_t *, int *);extern int pthread_attr_setscope(pthread_attr_t *, int);extern int pthread_attr_getscope(const pthread_attr_t *, int *);extern int pthread_attr_setstacksize(pthread_attr_t *, size_t);extern int pthread_attr_getstacksize(const pthread_attr_t *, size_t *);extern int pthread_attr_setstackaddr(pthread_attr_t *, void *);extern int pthread_attr_getstackaddr(const pthread_attr_t *, void **);extern int pthread_attr_setdetachstate(pthread_attr_t *, int);extern int pthread_attr_getdetachstate(const pthread_attr_t *, int *);extern int pthread_attr_setguardsize(pthread_attr_t *, int);extern int pthread_attr_getguardsize(const pthread_attr_t *, int *);extern int pthread_attr_setname_np(pthread_attr_t *, char *);extern int pthread_attr_getname_np(const pthread_attr_t *, char **);extern int pthread_attr_setprio_np(pthread_attr_t *, int);extern int pthread_attr_getprio_np(const pthread_attr_t *, int *);/* thread routines */extern int pthread_create(pthread_t *, const pthread_attr_t *, void *(*)(void *), void *);extern int __pthread_detach(pthread_t);#define pthread_detach(t) __pthread_detach(t)extern pthread_t pthread_self(void);extern int pthread_equal(pthread_t, pthread_t);extern int pthread_yield_np(void);extern void pthread_exit(void *);extern int pthread_join(pthread_t, void **);extern int pthread_once(pthread_once_t *, void (*)(void));extern int pthread_sigmask(int, const sigset_t *, sigset_t *);extern int pthread_kill(pthread_t, int);/* concurrency routines */extern int pthread_getconcurrency(void);extern int pthread_setconcurrency(int);/* context routines */extern int pthread_key_create(pthread_key_t *, void (*)(void *));extern int pthread_key_delete(pthread_key_t);extern int pthread_setspecific(pthread_key_t, const void *);extern void *pthread_getspecific(pthread_key_t);/* cancel routines */extern int pthread_cancel(pthread_t);extern void pthread_testcancel(void);extern int pthread_setcancelstate(int, int *);extern int pthread_setcanceltype(int, int *);/* scheduler routines */extern int pthread_setschedparam(pthread_t, int, const struct sched_param *);extern int pthread_getschedparam(pthread_t, int *, struct sched_param *);/* cleanup routines */extern void pthread_cleanup_push(void (*)(void *), void *);extern void pthread_cleanup_pop(int);extern int pthread_atfork(void (*)(void), void (*)(void), void (*)(void));/* mutex attribute routines */extern int pthread_mutexattr_init(pthread_mutexattr_t *);extern int pthread_mutexattr_destroy(pthread_mutexattr_t *);extern int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *, int);extern int pthread_mutexattr_getprioceiling(pthread_mutexattr_t *, int *);extern int pthread_mutexattr_setprotocol(pthread_mutexattr_t *, int);extern int pthread_mutexattr_getprotocol(pthread_mutexattr_t *, int *);extern int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int);extern int pthread_mutexattr_getpshared(pthread_mutexattr_t *, int *);extern int pthread_mutexattr_settype(pthread_mutexattr_t *, int);extern int pthread_mutexattr_gettype(pthread_mutexattr_t *, int *);/* mutex routines */extern int pthread_mutex_init(pthread_mutex_t *, const pthread_mutexattr_t *);extern int pthread_mutex_destroy(pthread_mutex_t *);extern int pthread_mutex_setprioceiling(pthread_mutex_t *, int, int *);extern int pthread_mutex_getprioceiling(pthread_mutex_t *, int *);extern int pthread_mutex_lock(pthread_mutex_t *);extern int pthread_mutex_trylock(pthread_mutex_t *);extern int pthread_mutex_unlock(pthread_mutex_t *);/* rwlock attribute routines */extern int pthread_rwlockattr_init(pthread_rwlockattr_t *);extern int pthread_rwlockattr_destroy(pthread_rwlockattr_t *);extern int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *, int);extern int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *, int *);/* rwlock routines */extern int pthread_rwlock_init(pthread_rwlock_t *, const pthread_rwlockattr_t *);extern int pthread_rwlock_destroy(pthread_rwlock_t *);extern int pthread_rwlock_rdlock(pthread_rwlock_t *);extern int pthread_rwlock_tryrdlock(pthread_rwlock_t *);extern int pthread_rwlock_wrlock(pthread_rwlock_t *);extern int pthread_rwlock_trywrlock(pthread_rwlock_t *);extern int pthread_rwlock_unlock(pthread_rwlock_t *);/* condition attribute routines */extern int pthread_condattr_init(pthread_condattr_t *);extern int pthread_condattr_destroy(pthread_condattr_t *);extern int pthread_condattr_setpshared(pthread_condattr_t *, int);extern int pthread_condattr_getpshared(pthread_condattr_t *, int *);/* condition routines */extern int pthread_cond_init(pthread_cond_t *, const pthread_condattr_t *);extern int pthread_cond_destroy(pthread_cond_t *);extern int pthread_cond_broadcast(pthread_cond_t *);extern int pthread_cond_signal(pthread_cond_t *);extern int pthread_cond_wait(pthread_cond_t *, pthread_mutex_t *);extern int pthread_cond_timedwait(pthread_cond_t *, pthread_mutex_t *, const struct timespec *);/* * Extensions created by POSIX 1003.1j */extern int pthread_abort(pthread_t);/* * Optionally fake poll(2) data structure and options */#if !(@PTH_FAKE_POLL@)/* use vendor poll(2) environment */#include <poll.h>#ifndef INFTIM#define INFTIM (-1)#endif#else/* fake a poll(2) environment */#define POLLIN 0x0001 /* any readable data available */#define POLLPRI 0x0002 /* OOB/Urgent readable data */#define POLLOUT 0x0004 /* file descriptor is writeable */#define POLLERR 0x0008 /* some poll error occurred */#define POLLHUP 0x0010 /* file descriptor was "hung up" */#define POLLNVAL 0x0020 /* requested events "invalid" */#define POLLRDNORM POLLIN#define POLLRDBAND POLLIN#define POLLWRNORM POLLOUT#define POLLWRBAND POLLOUT#ifndef INFTIM#define INFTIM (-1) /* poll infinite */#endifstruct pollfd { int fd; /* which file descriptor to poll */ short events; /* events we are interested in */ short revents; /* events found on return */};#endif/* * Optionally fake readv(2)/writev(2) data structure and options */#if !(@PTH_FAKE_RWV@)/* use vendor readv(2)/writev(2) environment */#include <sys/uio.h>#ifndef UIO_MAXIOV#define UIO_MAXIOV 1024#endif#else/* fake a readv(2)/writev(2) environment */struct iovec { void *iov_base; /* memory base address */ size_t iov_len; /* memory chunk length */};#ifndef UIO_MAXIOV#define UIO_MAXIOV 1024#endif#endif/* * Replacement Functions (threading aware) */extern pid_t __pthread_fork(void);extern unsigned int __pthread_sleep(unsigned int);extern int __pthread_nanosleep(const struct timespec *, struct timespec *);extern int __pthread_usleep(unsigned int);extern int __pthread_system(const char *);extern int __pthread_sigwait(const sigset_t *, int *);extern pid_t __pthread_waitpid(pid_t, int *, int);extern int __pthread_connect(int, struct sockaddr *, socklen_t);extern int __pthread_accept(int, struct sockaddr *, socklen_t *);extern int __pthread_select(int, fd_set *, fd_set *, fd_set *, struct timeval *);extern int __pthread_poll(struct pollfd *, nfds_t, int);extern ssize_t __pthread_read(int, void *, size_t);extern ssize_t __pthread_write(int, const void *, size_t);extern ssize_t __pthread_readv(int, const struct iovec *, int);extern ssize_t __pthread_writev(int, const struct iovec *, int);extern ssize_t __pthread_recv(int, void *, size_t, int);extern ssize_t __pthread_send(int, const void *, size_t, int);extern ssize_t __pthread_recvfrom(int, void *, size_t, int, struct sockaddr *, socklen_t *);extern ssize_t __pthread_sendto(int, const void *, size_t, int, const struct sockaddr *, socklen_t);extern ssize_t __pthread_pread(int, void *, size_t, off_t);extern ssize_t __pthread_pwrite(int, const void *, size_t, off_t);#if _POSIX_THREAD_SYSCALL_SOFT && !defined(_PTHREAD_PRIVATE)#define fork __pthread_fork#define sleep __pthread_sleep#define nanosleep __pthread_nanosleep#define usleep __pthread_usleep#define system __pthread_system#define sigwait __pthread_sigwait#define waitpid __pthread_waitpid#define connect __pthread_connect#define accept __pthread_accept#define select __pthread_select#define poll __pthread_poll#define read __pthread_read#define write __pthread_write#define readv __pthread_readv#define writev __pthread_writev#define recv __pthread_recv#define send __pthread_send#define recvfrom __pthread_recvfrom#define sendto __pthread_sendto#define pread __pthread_pread#define pwrite __pthread_pwrite#endif/* * More "special" POSIX stuff */#define sched_yield pthread_yield_np/* * Backward Compatibility Stuff for Pthread draft 4 (DCE threads) */#ifdef _POSIX_BACKCOMPAT#define _POSIX_THREADS_PER_THREAD_SIGNALS 1#define pthread_attr_default NULL#define pthread_condattr_default NULL#define pthread_mutexattr_default NULL#define pthread_once_init PTHREAD_ONCE_INIT#define pthread_detach(thread) __pthread_detach(*(thread))#define pthread_attr_init pthread_attr_create#define pthread_attr_delete pthread_attr_destroy#define pthread_keycreate pthread_key_create#define pthread_yield pthread_yield_np#define pthread_attr_setprio pthread_attr_setprio_np#define pthread_attr_getprio pthread_attr_getprio_np#define CANCEL_ON 1#define CANCEL_OFF 2#define pthread_setcancel(what) \ pthread_setcancelstate((what) == CANCEL_ON ? \ PTHREAD_CANCEL_ENABLE : \ PTHREAD_CANCEL_DISABLE)#define pthread_setasynccancel(what) \ pthread_setcanceltype((what) == CANCEL_ON ? \ PTHREAD_CANCEL_ASYNCHRONOUS : \ PTHREAD_CANCEL_DEFERRED)#define pthread_setscheduler #error#define pthread_setprio #error#define pthread_attr_setsched #error#define pthread_attr_getsched #error#endif /* _POSIX_BACKCOMPAT */#ifdef __cplusplus}#endif#endif /* _PTH_PTHREAD_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -