From 458aac8598b866ceb615304db637cf624334f271 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Dvo=C5=99=C3=A1k?= Date: Mon, 5 Sep 2005 17:10:36 +0000 Subject: *BUGFIX* *DRUMS* removing internal old phreads-win32 and zlib CVS patchset: 7721 CVS date: 2005/09/05 17:10:36 --- win32/contrib/pthreads/signal.c | 172 ---------------------------------------- 1 file changed, 172 deletions(-) delete mode 100644 win32/contrib/pthreads/signal.c (limited to 'win32/contrib/pthreads/signal.c') diff --git a/win32/contrib/pthreads/signal.c b/win32/contrib/pthreads/signal.c deleted file mode 100644 index 867dc4cc7..000000000 --- a/win32/contrib/pthreads/signal.c +++ /dev/null @@ -1,172 +0,0 @@ -/* - * signal.c - * - * Description: - * Thread-aware signal functions. - * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright (C) 1998 - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, - * MA 02111-1307, USA - */ - -/* - * Strategy for implementing pthread_kill() - * ======================================== - * - * Win32 does not implement signals. - * Signals are simply software interrupts. - * pthread_kill() asks the system to deliver a specified - * signal (interrupt) to a specified thread in the same - * process. - * Signals are always asynchronous (no deferred signals). - * Pthread-win32 has an async cancelation mechanism. - * A similar system can be written to deliver signals - * within the same process (on ix86 processors at least). - * - * Each thread maintains information about which - * signals it will respond to. Handler routines - * are set on a per-process basis - not per-thread. - * When signalled, a thread will check it's sigmask - * and, if the signal is not being ignored, call the - * handler routine associated with the signal. The - * thread must then (except for some signals) return to - * the point where it was interrupted. - * - * Ideally the system itself would check the target thread's - * mask before possibly needlessly bothering the thread - * itself. This could be done by pthread_kill(), that is, - * in the signaling thread since it has access to - * all pthread_t structures. It could also retrieve - * the handler routine address to minimise the target - * threads response overhead. This may also simplify - * serialisation of the access to the per-thread signal - * structures. - * - * pthread_kill() eventually calls a routine similar to - * ptw32_cancel_thread() which manipulates the target - * threads processor context to cause the thread to - * run the handler launcher routine. pthread_kill() must - * save the target threads current context so that the - * handler launcher routine can restore the context after - * the signal handler has returned. Some handlers will not - * return, eg. the default SIGKILL handler may simply - * call pthread_exit(). - * - * The current context is saved in the target threads - * pthread_t structure. - */ - -#include "pthread.h" -#include "implement.h" - -#if HAVE_SIGSET_T - -static void -ptw32_signal_thread() -{ -} - -static void -ptw32_signal_callhandler() -{ -} - -int -pthread_sigmask(int how, sigset_t const *set, sigset_t *oset) -{ - pthread_t thread = pthread_self(); - - if (thread == NULL) - { - return ENOENT; - } - - /* Validate the `how' argument.*/ - if (set != NULL) - { - switch (how) - { - case SIG_BLOCK: - break; - case SIG_UNBLOCK: - break; - case SIG_SETMASK: - break; - default: - /* Invalid `how' argument. */ - return EINVAL; - } - } - - /* Copy the old mask before modifying it. */ - if (oset != NULL) - { - memcpy(oset, &(thread->sigmask), sizeof(sigset_t)); - } - - if (set != NULL) - { - unsigned int i; - - /* FIXME: this code assumes that sigmask is an even multiple of - the size of a long integer. */ - - unsigned long *src = (unsigned long const *) set; - unsigned long *dest = (unsigned long *) &(thread->sigmask); - - switch (how) - { - case SIG_BLOCK: - for (i = 0; i < (sizeof(sigset_t) / sizeof(unsigned long)); i++) - { - /* OR the bit field longword-wise. */ - *dest++ |= *src++; - } - break; - case SIG_UNBLOCK: - for (i = 0; i < (sizeof(sigset_t) / sizeof(unsigned long)); i++) - { - /* XOR the bitfield longword-wise. */ - *dest++ ^= *src++; - } - case SIG_SETMASK: - /* Replace the whole sigmask. */ - memcpy(&(thread->sigmask), set, sizeof(sigset_t)); - break; - } - } - - return 0; -} - -int pthread_kill(pthread_t thread, - int signo) -{ -} - -int sigwait(const sigset_t *set, - int *sig) -{ -} - -int sigaction(int signum, - const struct sigaction *act, - struct sigaction *oldact) -{ -} - -#endif /* HAVE_SIGSET_T */ -- cgit v1.2.3