mirror of
https://github.com/MariaDB/server.git
synced 2025-08-30 11:22:14 +03:00
65 lines
2.3 KiB
Modula-2
Executable File
65 lines
2.3 KiB
Modula-2
Executable File
/* This file defines the states that a given thread can be in.
|
|
|
|
The funky macro use here is so that this one header file can also
|
|
define the corresponding state names, so that the two lists can't
|
|
get inconsistent within a given source tree. */
|
|
|
|
/* The thread is runnable. */
|
|
__pthread_defstate (PS_RUNNING, "running")
|
|
|
|
/*
|
|
* The rest of the states are where the thread is waiting on some event.
|
|
* Someday maybe the "data" field will point to the object being waited for.
|
|
*/
|
|
|
|
/* Waiting for a mutex (pthread_mutex_lock()). */
|
|
__pthread_defstate (PS_MUTEX_WAIT, "mutex")
|
|
|
|
/* Waiting on a condition variable
|
|
(pthread_cond_wait(), or pthread_cond_timedwait()). */
|
|
__pthread_defstate (PS_COND_WAIT, "cond")
|
|
|
|
/*
|
|
* File descriptor stuff.
|
|
*
|
|
* File descriptors have a special lock. If it is a FULL_DUPLEX fd such as
|
|
* a socket or fifo then it has two mutexes, one for reads and one for writes.
|
|
* Some routines will even try to get both. It will always try to get the
|
|
* read lock first before tring to get the write. All other fds only have
|
|
* one mutex which all calls will get. It is displayed as if it is a read lock.
|
|
*/
|
|
/* Waiting on a fd read lock (fd_lock()) */
|
|
__pthread_defstate (PS_FDLR_WAIT, "fdlr")
|
|
|
|
/* Waiting on a fd write lock (fd_lock()) */
|
|
__pthread_defstate (PS_FDLW_WAIT, "fdlw")
|
|
|
|
/* Waiting for the kernel fd to have data to read,
|
|
(read(), readv(), recv(), recvfrom(), and recvmsg()). */
|
|
__pthread_defstate (PS_FDR_WAIT, "fdr") /* Waiting on a kernel read */
|
|
|
|
/* Waiting for the kernel fd to allow a write
|
|
(write(), writev(), send(), sendto(), sendmsg()) */
|
|
__pthread_defstate (PS_FDW_WAIT, "fdw")
|
|
|
|
/* Waiting for several fds in a select() */
|
|
__pthread_defstate (PS_SELECT_WAIT, "select")
|
|
|
|
/* Waiting on a sleep (sleep(), usleep() or nanosleep()). */
|
|
__pthread_defstate (PS_SLEEP_WAIT, "sleep")
|
|
|
|
/* Waiting for a child to die (wait(), waitpid(), wait3(), or wait4()). */
|
|
__pthread_defstate (PS_WAIT_WAIT, "wait")
|
|
|
|
/* Waiting on some set of signals (sigwait()) */
|
|
__pthread_defstate (PS_SIGWAIT, "sig")
|
|
|
|
/* Waiting for a thread to die (pthread_join()) */
|
|
__pthread_defstate (PS_JOIN, "join")
|
|
|
|
/* Waiting for some thread to join with me or detach me */
|
|
__pthread_defstate (PS_DEAD, "dead")
|
|
|
|
/* Waiting for some thread to create me */
|
|
__pthread_defstate (PS_UNALLOCED, "unallocated")
|