X-Git-Url: https://git.harvie.cz/?a=blobdiff_plain;f=c%2Fpthread_extra%2Fpthread_extra.h;h=4df45d97eb6b29d3fed4398035a31756e4cf5fc0;hb=3b8f487aed778edba3d8cffe5bdad8e56470c84a;hp=15e4d8bd39c88fe49391c4e51ab56342092e0977;hpb=7e0f3dba1713edfea98cdfe7909c08f68fa5f7b7;p=mirrors%2FPrograms.git diff --git a/c/pthread_extra/pthread_extra.h b/c/pthread_extra/pthread_extra.h index 15e4d8b..4df45d9 100644 --- a/c/pthread_extra/pthread_extra.h +++ b/c/pthread_extra/pthread_extra.h @@ -18,17 +18,21 @@ #ifdef __PTHREAD_EXTRA_INTERNAL typedef struct pthread_user_data_internal_t { pthread_t tid; //Thread ID - sig_atomic_t running; //Internaly used by pthread_pause void *usr; //User pointer + //Internaly used members: + sig_atomic_t running; //pthread_pause } pthread_user_data_internal_t; pthread_user_data_internal_t* pthread_user_data_internal(pthread_t thread); +int pthread_user_data_lock(); +int pthread_user_data_unlock(); #endif //__PTHREAD_EXTRA_INTERNAL void** pthread_user_data_ptr(pthread_t thread); void* pthread_user_data_get(pthread_t thread); void pthread_user_data_set(pthread_t thread, void *usr); void pthread_user_data_cleanup(void * arg); +int pthread_user_data_internal_iterate(int (*routine)(pthread_t), void *arg); // Pausing @@ -44,9 +48,13 @@ int pthread_extra_create(pthread_t *restrict thread, void pthread_unpause_handler(); void pthread_pause_handler(); void pthread_pause_enable(); +void pthread_pause_disable(); int pthread_pause(pthread_t thread); int pthread_unpause(pthread_t thread); +int pthread_pause_all(); +int pthread_unpause_all(); int pthread_pause_reschedule(pthread_t thread); +int pthread_extra_yield(); // Message queues