From 19185ac5121f9f5c12adb893404acf3e8c9db6d4 Mon Sep 17 00:00:00 2001 From: jb Date: Sat, 11 Apr 1998 07:47:22 +0000 Subject: Change the FILE locking to be by FILE, not by the underlying fd as it was. Add a FILE_WAIT state and queue threads waiting for a FILE lock. Start using the sys/queue.h macros instead of the way that MIT pthreads did it. Add a thread name to the private thread structure and a non-POSIX function to set this. This helps (me at least) when sending a SIGINFO to a threaded process to get a /tmp/uthread.dump to see what the threads are doing this time. It is nice to be able to recognise (yes, I spell that with an 's' too) which threads are which. --- lib/libpthread/thread/thr_private.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'lib/libpthread/thread/thr_private.h') diff --git a/lib/libpthread/thread/thr_private.h b/lib/libpthread/thread/thr_private.h index dc36d8d..5ceeaba 100644 --- a/lib/libpthread/thread/thr_private.h +++ b/lib/libpthread/thread/thr_private.h @@ -50,6 +50,7 @@ */ #include #include +#include #include #include #include @@ -219,6 +220,7 @@ enum pthread_state { PS_FDLW_WAIT, PS_FDR_WAIT, PS_FDW_WAIT, + PS_FILE_WAIT, PS_SELECT_WAIT, PS_SLEEP_WAIT, PS_WAIT_WAIT, @@ -283,6 +285,7 @@ struct pthread { */ #define PTHREAD_MAGIC ((u_int32_t) 0xd09ba115) u_int32_t magic; + char *name; /* * Pointer to the next thread in the thread linked list. @@ -387,12 +390,18 @@ struct pthread { * The current thread can belong to only one queue at a time. * * Pointer to queue (if any) on which the current thread is waiting. + * + * XXX The queuing should be changed to use the TAILQ entry below. + * XXX For the time being, it's hybrid. */ struct pthread_queue *queue; /* Pointer to next element in queue. */ struct pthread *qnxt; + /* Queue entry for this thread: */ + TAILQ_ENTRY(pthread) qe; + /* Wait data. */ union pthread_wait_data data; @@ -634,8 +643,6 @@ ssize_t _thread_sys_sendto(int, const void *,size_t, int, const struct sockaddr /* #include */ #ifdef _STDIO_H_ -void _thread_flockfile(FILE *fp,char *fname,int lineno); -void _thread_funlockfile(FILE *fp); FILE *_thread_sys_fdopen(int, const char *); FILE *_thread_sys_fopen(const char *, const char *); FILE *_thread_sys_freopen(const char *, const char *, FILE *); -- cgit v1.1