diff options
Diffstat (limited to 'java/jdk16/files')
-rw-r--r-- | java/jdk16/files/patch-InetAddressImpl.c | 114 | ||||
-rw-r--r-- | java/jdk16/files/patch-common::Defs-bsd.gmk | 32 | ||||
-rw-r--r-- | java/jdk16/files/patch-platform_i486 | 13 | ||||
-rw-r--r-- | java/jdk16/files/patch-threads_bsd.c | 726 | ||||
-rw-r--r-- | java/jdk16/files/patch-threads_md.c | 12 |
5 files changed, 8 insertions, 889 deletions
diff --git a/java/jdk16/files/patch-InetAddressImpl.c b/java/jdk16/files/patch-InetAddressImpl.c deleted file mode 100644 index ddb4f8045b81..000000000000 --- a/java/jdk16/files/patch-InetAddressImpl.c +++ /dev/null @@ -1,114 +0,0 @@ -$FreeBSD$ - ---- ../src/solaris/native/java/net/InetAddressImpl.c 25 Jan 2003 23:22:26 -0000 1.7 -+++ ../src/solaris/native/java/net/InetAddressImpl.c 28 Feb 2003 09:34:18 -0000 -@@ -25,6 +25,7 @@ - - #include "java_net_InetAddressImpl.h" - -+#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) - /* reentrant BIND includes --billh */ - - #include <sys/param.h> -@@ -33,14 +34,16 @@ - - /* forward declarations --billh */ - -+static - HOST_R_RETURN --gethostbyname_r(const char *name, struct hostent *hptr, -- HOST_R_ARGS); -+__j_gethostbyname_r(const char *name, struct hostent *hptr, -+ HOST_R_ARGS); - -+static - HOST_R_RETURN --gethostbyaddr_r(const char *addr, int len, int type, -- struct hostent *hptr, -- HOST_R_ARGS); -+__j_gethostbyaddr_r(const char *addr, int len, int type, -+ struct hostent *hptr, HOST_R_ARGS); -+#endif - - /* - */ -@@ -99,6 +102,8 @@ - - #ifdef __GLIBC__ - gethostbyname_r(hostname, &res, buf, sizeof(buf), &hp, &h_error); -+#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) -+ hp = __j_gethostbyname_r(hostname, &res, buf, sizeof(buf), &h_error); - #else - hp = gethostbyname_r(hostname, &res, buf, sizeof(buf), &h_error); - #endif -@@ -106,6 +111,9 @@ - #ifdef __GLIBC__ - gethostbyaddr_r(hp->h_addr, hp->h_length, AF_INET, - &res2, buf2, sizeof(buf2), &hp, &h_error); -+#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) -+ hp = __j_gethostbyaddr_r(hp->h_addr, hp->h_length, AF_INET, -+ &res2, buf2, sizeof(buf2), &h_error); - #else - hp = gethostbyaddr_r(hp->h_addr, hp->h_length, AF_INET, - &res2, buf2, sizeof(buf2), &h_error); -@@ -189,6 +197,8 @@ - /* Try once, with our static buffer. */ - #ifdef __GLIBC__ - gethostbyname_r(hostname, &res, buf, sizeof(buf), &hp, &h_error); -+#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) -+ hp = __j_gethostbyname_r(hostname, &res, buf, sizeof(buf), &h_error); - #else - hp = gethostbyname_r(hostname, &res, buf, sizeof(buf), &h_error); - #endif -@@ -203,6 +213,9 @@ - #ifdef __GLIBC__ - gethostbyname_r(hostname, &res, tmp, BIG_HENT_BUF_SIZE, - &hp, &h_error); -+#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) -+ hp = __j_gethostbyname_r(hostname, &res, tmp, BIG_HENT_BUF_SIZE, -+ &h_error); - #else - hp = gethostbyname_r(hostname, &res, tmp, BIG_HENT_BUF_SIZE, - &h_error); -@@ -283,6 +296,9 @@ - #ifdef __GLIBC__ - gethostbyaddr_r((char *)&addr, sizeof(addr), AF_INET, &hent, - buf, sizeof(buf), &hp, &h_error); -+#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) -+ hp = __j_gethostbyaddr_r((char *)&addr, sizeof(addr), AF_INET, &hent, -+ buf, sizeof(buf), &h_error); - #else - hp = gethostbyaddr_r((char *)&addr, sizeof(addr), AF_INET, &hent, - buf, sizeof(buf), &h_error); -@@ -297,6 +313,9 @@ - #ifdef __GLIBC__ - gethostbyaddr_r((char *)&addr, sizeof(addr), AF_INET, - &hent, tmp, BIG_HENT_BUF_SIZE, &hp, &h_error); -+#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) -+ hp = __j_gethostbyaddr_r((char *)&addr, sizeof(addr), AF_INET, -+ &hent, tmp, BIG_HENT_BUF_SIZE, &h_error); - #else - hp = gethostbyaddr_r((char *)&addr, sizeof(addr), AF_INET, - &hent, tmp, BIG_HENT_BUF_SIZE, &h_error); -@@ -335,8 +354,9 @@ - static HOST_R_RETURN - copy_hostent(struct hostent *, struct hostent *, HOST_R_COPY_ARGS); - -+static - HOST_R_RETURN --gethostbyname_r(const char *name, struct hostent *hptr, HOST_R_ARGS) { -+__j_gethostbyname_r(const char *name, struct hostent *hptr, HOST_R_ARGS) { - struct hostent *he = gethostbyname(name); - - HOST_R_ERRNO; -@@ -347,8 +367,9 @@ - return (copy_hostent(he, hptr, HOST_R_COPY)); - } - -+static - HOST_R_RETURN --gethostbyaddr_r(const char *addr, int len, int type, -+__j_gethostbyaddr_r(const char *addr, int len, int type, - struct hostent *hptr, HOST_R_ARGS) { - struct hostent *he = gethostbyaddr(addr, len, type); - diff --git a/java/jdk16/files/patch-common::Defs-bsd.gmk b/java/jdk16/files/patch-common::Defs-bsd.gmk index d0c78fad9baf..fbeca94149d8 100644 --- a/java/jdk16/files/patch-common::Defs-bsd.gmk +++ b/java/jdk16/files/patch-common::Defs-bsd.gmk @@ -1,27 +1,11 @@ - -$FreeBSD$ - ---- common/Defs-bsd.gmk.orig Mon Sep 10 17:02:16 2001 -+++ common/Defs-bsd.gmk Mon Sep 10 17:02:42 2001 -@@ -128,7 +128,7 @@ - ifeq ($(TRUE_PLATFORM), NetBSD) - DEVTOOLS_PATH = /usr/pkg/bin/ - else +--- ../../j2se/make/common/Defs-bsd.gmk.orig Fri Mar 7 01:38:41 2003 ++++ ../../j2se/make/common/Defs-bsd.gmk Fri Mar 7 01:38:01 2003 +@@ -155,7 +155,7 @@ + + # DEVTOOLS_PATH is for other tools required for building (such as + # zip, etc.) -DEVTOOLS_PATH = /usr/local/bin/ -+DEVTOOLS_PATH = $(LOCALBASE)/bin/ - endif ++DEVTOOLS_PATH = ${LOCALBASE}/bin/ # Allow the user to override the default value... ifdef ALT_DEVTOOLS_PATH -@@ -221,10 +221,10 @@ - else # ARCH - CFLAGS_COMMON = $(GCC_WARNINGS) - endif # ARCH --CFLAGS_OPT = $(POPT) -+CFLAGS_OPT = $(POPT) $(SYS_CFLAGS) - CFLAGS_DBG = -g3 - CXXFLAGS_COMMON = $(GCC_WARNINGS) --CXXFLAGS_OPT = $(POPT) -+CXXFLAGS_OPT = $(POPT) $(SYS_CFLAGS) - CXXFLAGS_DBG = -g3 - - CPPFLAGS_COMMON = -D$(ARCH) -DARCH='"$(ARCH)"' -DSOLARIS2 $(VERSION_DEFINES) \ + DEVTOOLS_PATH = $(subst //,/,$(ALT_DEVTOOLS_PATH)/) diff --git a/java/jdk16/files/patch-platform_i486 b/java/jdk16/files/patch-platform_i486 deleted file mode 100644 index 176fe9a69716..000000000000 --- a/java/jdk16/files/patch-platform_i486 +++ /dev/null @@ -1,13 +0,0 @@ -$FreeBSD$ - ---- ../../hotspot1.3.1/build/linux/platform_i486 Thu Jan 23 00:28:52 2003 -+++ ../../hotspot1.3.1/build/linux/platform_i486 Thu Jan 23 01:14:01 2003 -@@ -6,7 +6,7 @@ - - lib_arch = i386 - --compiler = gcc32 -+compiler = gcc - - gnu_dis_arch = i386 - diff --git a/java/jdk16/files/patch-threads_bsd.c b/java/jdk16/files/patch-threads_bsd.c deleted file mode 100644 index 0549832f1833..000000000000 --- a/java/jdk16/files/patch-threads_bsd.c +++ /dev/null @@ -1,726 +0,0 @@ -$FreeBSD$ - ---- ../src/solaris/hpi/native_threads/src/threads_bsd.c 7 Feb 2002 05:19:54 -0000 1.12 -+++ ../src/solaris/hpi/native_threads/src/threads_bsd.c 25 Feb 2003 16:31:54 -0000 -@@ -22,32 +22,23 @@ - #include "np.h" - - #include <pthread.h> -+#include <pthread_np.h> - - #if defined(__FreeBSD__) - --#include <pthread_np.h> -+#include <assert.h> - --/* Remove defines from pthread.h so pthread_private.h can be included */ --#undef pthread_condattr_default --#undef pthread_mutexattr_default - #undef pthread_attr_default -+#undef pthread_mutexattr_default -+#undef pthread_condattr_default - #include "pthread_private.h" - --#include <assert.h> --#include <ucontext.h> --#include <machine/ucontext.h> -- --#include <sys/exec.h> --#include <vm/vm.h> --#include <vm/pmap.h> --#include <machine/pmap.h> --#include <machine/vmparam.h> -- - #endif - - #include <string.h> - #include <signal.h> - #include <sys/signal.h> -+#include <sys/time.h> - #include <sys/resource.h> - #include <stdlib.h> - #include <string.h> -@@ -63,14 +54,9 @@ - /* Private functions used to implement native threading. --billh */ - - #ifdef DEBUG_BSD_NATIVE_THREADS --void _pthread_suspend_all_np(void); --void _pthread_resume_all_np(void); --#endif --void record_uc(sys_thread_t *, ucontext_t *); --void record_gc_registers_of(sys_thread_t *); -- --void dumpThreadStates(); - void dumpThreadLogStates(pthread_t); -+void dumpThreadStates(); -+#endif - - /* - * Suspend a thread. Used to implement java.lang.Thread.suspend(), -@@ -108,28 +94,24 @@ - int - np_stackinfo(void **addr, long *sizep) - { -- thread_t self = pthread_self(); -- int base; -- int size; -- -- if (!pthread_equal(self, _thread_initial)) { -- *addr = self->stack; -- *sizep = (long) PTHREAD_STACK_DEFAULT; -- -- } else { -- /* in main()'s thread */ -- struct rlimit r; -- -- if (getrlimit(RLIMIT_STACK, &r) == -1) -- return SYS_ERR; -- -- /* PS_STRINGS is also from sys/exec.h in FreeBSD, but as macro. --billh */ -- -- *addr = (void *) (PS_STRINGS +1); -- *sizep = (long)r.rlim_cur; -- } -+ pthread_attr_t attr; -+ size_t size; - -+ if ((errno = pthread_attr_init(&attr))) -+ return SYS_ERR; -+ if ((errno = pthread_attr_get_np(pthread_self(), &attr))) -+ goto err; -+ if ((errno = pthread_attr_getstackaddr(&attr, addr))) -+ goto err; -+ if ((errno = pthread_attr_getstacksize(&attr, &size))) -+ goto err; -+ *sizep = size; -+ pthread_attr_destroy(&attr); - return SYS_OK; -+ -+err: -+ pthread_attr_destroy(&attr); -+ return SYS_ERR; - } - - /* -@@ -177,7 +159,7 @@ - Do this for the FreeBSD implementation too, since this is a silly - function anyways. --billh - */ -- return TRUE; -+ return TRUE; - } - - -@@ -190,38 +172,54 @@ - static void - record_thread_regs() - { -- sys_thread_t *tid; -+ struct pthread *self = pthread_self(); -+ sys_thread_t *tid = ThreadQueue; - int i; -- int sp; - -- tid = ThreadQueue; -- for (i = 0; i < ActiveThreadCount && tid != 0; i++) { -- int i; -- -- if (tid->sys_thread != 0) { --#ifdef __bsdi__ -- /* if thread has already been initialized */ -- if (pthread_getstackpointer_np(tid->sys_thread, &sp) == 0) -- tid->sp = sp; -- else -- tid->sp = 0; --#elif __FreeBSD__ --#endif -- tid->sp = tid->sys_thread->stack; --//#endif //__FreeBSD__ --/* Potential race here if the stack isn't setup before GC. --billh */ -- } else { -+ for (i = 0; i < ActiveThreadCount && tid != NULL; i++, tid = tid->next) { -+ struct pthread *thread = tid->sys_thread; -+ -+ if (thread == 0) { - /* - * thread is still in the process of being initalized. - * So GC should not care about this thread. Just - * set its sp to 0, and this will force GC to ignore it. - */ - tid->sp = 0; -+ continue; - } - -- record_gc_registers_of(tid); -+ tid->sp = thread->stack; -+/* Potential race here if the stack isn't setup before GC. --billh */ - -- tid = tid->next; -+ /* -+ * The thread that calls this function will alway be the JVM GC thread, -+ * so skip over it in the list of threads. -+ */ -+ if (thread != self && (thread->flags & PTHREAD_FLAGS_PRIVATE) == 0) { -+ register_t *regbase; -+ -+#ifdef DEBUG_BSD_NATIVE_THREADS -+ /* -+ * Got search candidate.. -+ */ -+ if (thread->state != PS_SUSPENDED) -+ dumpThreadLogStates(thread); -+#endif -+ -+ regbase = (register_t*) &thread->ctx.jb[0]; -+ tid->regs[0] = regbase[6]; /* eax */ -+ tid->regs[1] = 0; /* ecx (missing) */ -+ tid->regs[2] = 0; /* edx (missing) */ -+ tid->regs[3] = regbase[1]; /* ebx */ -+ tid->regs[4] = regbase[3]; /* ebp */ -+ tid->regs[5] = regbase[4]; /* esi */ -+ tid->regs[6] = regbase[5]; /* edi */ -+ -+#ifdef DEBUG_BSD_NATIVE_THREADS -+ dumpThreadStates(); -+#endif -+ } - } - - #ifdef DEBUG_BSD_NATIVE_THREADS -@@ -239,14 +237,7 @@ - { - sysAssert(SYS_QUEUE_LOCKED(sysThreadSelf())); - --#ifdef DEBUG_BSD_NATIVE_THREADS -- _pthread_suspend_all_np(); --#else -- pthread_single_np(); --#endif -- --//usleep(100000 *3); -- -+ pthread_suspend_all_np(); - record_thread_regs(); - return SYS_OK; - } -@@ -259,42 +250,13 @@ - np_multi(void) - { - sysAssert(SYS_QUEUE_LOCKED(sysThreadSelf())); --#ifdef DEBUG_BSD_NATIVE_THREADS -- _pthread_resume_all_np(); --#else -- pthread_multi_np(); --#endif -+ pthread_resume_all_np(); - } - -- -- -- -+#ifdef DEBUG_BSD_NATIVE_THREADS - /* pthreads hackery begins --billh */ - --#define ANALRETENTIVE (6 + 1) -- --char SuspendList[ANALRETENTIVE][16] = --{ -- "SUSP_NO", /* Not suspended. */ -- "SUSP_YES", /* Suspended. */ -- "SUSP_JOIN", /* Suspended, joining. */ -- "SUSP_NOWAIT", /* Suspended, was in a mutex or condition queue. */ -- "SUSP_MUTEX_WAIT", /* Suspended, still in a mutex queue. */ -- "SUSP_COND_WAIT", /* Suspended, still in a condition queue. */ -- "susp boundless" --}; -- --char *getSuspendStateString(enum pthread_susp suspendState) --{ -- if (suspendState < ANALRETENTIVE) -- return &SuspendList[suspendState][0]; -- else -- return &SuspendList[ANALRETENTIVE-1][0]; --} -- --#define SATAN (21 + 1) /* for the error string at the end of the list */ -- --char SignalList [SATAN][16] -+char SignalList [][16] - = - { - "PS_RUNNING", -@@ -316,18 +278,17 @@ - "PS_JOIN", - "PS_SUSPENDED", - "PS_DEAD", -- "PS_DEADLCK", -+ "PS_DEADLOCK", - "PS_STATE_MAX", -- "PS_REQUEST_WAITING_SUSPENDED", - "boundless" - }; - - char *getThreadStateString(enum pthread_state threadState) - { - if (threadState < SATAN) -- return &SignalList[threadState][0]; -- else -- return &SignalList[SATAN-1][0]; -+ return SignalList[threadState]; -+ else -+ return SignalList[SATAN-1]; - } - - void dumpThreadStates() -@@ -336,114 +297,29 @@ - struct pthread *thread; - struct pthread *self = pthread_self(); - --#ifdef DEBUG_BSD_NATIVE_THREADS - _thread_kern_sig_defer(); - TAILQ_FOREACH(thread, &_thread_list, tle) { - if (thread != self) { /* special case this --billh */ -- printf("\tthread %d\t%s\t%s\n", -+ printf("\tthread %d\t%s\n", - threadCount, -- getThreadStateString(thread->state), -- getSuspendStateString(thread->suspended)); -+ getThreadStateString(thread->state)); - - if (thread->state != PS_SUSPENDED) - dumpThreadLogStates(thread); -- } -- else -- { -- printf("\tgc thread %d\t%s\t%s\n", -+ } else { -+ printf("\tgc thread %d\t%s\n", - threadCount, -- getThreadStateString(thread->state), -- getSuspendStateString(thread->suspended)); -+ getThreadStateString(thread->state)) - } - ++threadCount; - } - _thread_kern_sig_undefer(); - printf("\n"); --#endif --} -- -- --#ifdef DEBUG_BSD_NATIVE_THREADS --extern void _pthread_suspend_np_by_pthread_common(pthread_t); --extern void _pthread_resume_by_pthread_common(pthread_t, enum pthread_susp); -- --void --_pthread_suspend_all_np(void) --{ -- struct pthread *thread; -- struct pthread *self = pthread_self(); -- --fprintf(stderr, "pthread_suspend_all_np\n"); -- /* -- * Defer signals to protect the scheduling queues from -- * access by the signal handler: -- */ -- _thread_kern_sig_defer(); -- -- /* Suspend all threads other than the current thread: */ -- TAILQ_FOREACH(thread, &_thread_list, tle) { -- if (thread != self) { -- _pthread_suspend_np_by_pthread_common(thread); -- } -- } -- -- /* -- * Undefer and handle pending signals, yielding if necessary: -- */ -- _thread_kern_sig_undefer(); --fprintf(stderr, "pthread_suspend_all_np END\n"); --} -- --/* Resume a thread: */ --void --_pthread_resume_all_np(void) --{ -- enum pthread_susp old_suspended; -- struct pthread *thread; -- struct pthread *self = pthread_self(); -- --fprintf(stderr, "pthread_resume_all_np\n"); -- _thread_kern_sig_defer(); -- -- /* -- Iterate through the thread list and resume suspended threads. -- this is copied from pthread_resume_np(). --billh -- */ -- -- TAILQ_FOREACH(thread, &_thread_list, tle) { -- if (thread != self) { -- /* Cancel any pending suspensions: */ -- -- old_suspended = thread->suspended; -- thread->suspended = SUSP_NO; -- -- _pthread_resume_by_pthread_common(thread, old_suspended); -- -- } // if !thread_self -- } // TAILQ_FOREACH -- -- /* -- * Undefer and handle pending signals, yielding if -- * necessary: -- */ -- _thread_kern_sig_undefer(); --fprintf(stderr, "pthread_resume_all_np END\n"); - } --#endif - - /* - [A snippet from Dan Eichen's email on the subject] - -- It uses _longjmp (non-signal-saving/restoring) for the most part. -- The only exception is when the process (currently running thread) is -- interrupted by a signal. So your context types are a jmp_buf and -- a ucontext_t (if interrupted by a signal). If thread->ctxtype is -- CTX_UC, the context is stored as a ucontext in thread->ctx.uc. -- Otherwise, the context is stored as a jmp_buf in thread->ctx.jb. -- We don't currently use CTX_JB and CTX_SJB, so don't even bother -- with those cases. Those should go away actually; all we need -- to know is if it is a ucontext_t or a jmp_buf. -- - You can also look at src/gnu/usr.bin/binutils/gdb/freebsd-uthread.c. - It knows how to iterate through all the threads and pull out - (and even set) thread contexts. -@@ -462,19 +338,8 @@ - --billh - */ - --void clear_gc_registers(sys_thread_t * jthread) --{ --/* clear out x86 registers for the thread's "self" --billh */ -- -- jthread->regs[0] = 0; jthread->regs[1] = 0; -- jthread->regs[2] = 0; jthread->regs[3] = 0; -- jthread->regs[4] = 0; jthread->regs[5] = 0; -- jthread->regs[6] = 0; --} -- - void dumpThreadLogStates(pthread_t thread) - { --#ifdef DEBUG_BSD_NATIVE_THREADS - int i; - for(i=0; i < STATE_LOG_SIZE; ++i) - { -@@ -494,311 +359,5 @@ - } - } - printf("\t\t***XXX\n"); --#endif --} -- --void record_gc_registers_of(sys_thread_t *javaThread) --{ --struct pthread *self = pthread_self(); --struct pthread *thread = NULL; -- -- assert( javaThread != NULL ); -- assert( javaThread->sys_thread != NULL ); -- -- thread = javaThread->sys_thread; -- -- /* -- * The thread that calls this function will alway be the JVM GC thread, -- * so skip over it in the list of threads. -- */ -- if ( (thread == self) -- || ((thread->flags & PTHREAD_FLAGS_PRIVATE) != 1) -- ) -- { -- record_uc(javaThread, &thread->ctx.uc); --#ifdef DEBUG_BSD_NATIVE_THREADS -- goto Terminate; // And do nothing with this pthread entry. --#endif -- } -- -- /* -- * Got search candiate.. -- */ -- if (thread->state != PS_SUSPENDED) -- dumpThreadLogStates(thread); -- -- switch ((int)thread->ctxtype) -- { -- case CTX_JB_NOSIG: /* 0) jmp_buf context without signal mask for blocking IO, etc... */ -- case CTX_JB: /* 1) should never be CTX_JB */ -- case CTX_SJB: /* 2) should never be CTX_SJB */ -- clear_gc_registers(javaThread); --#ifdef DEBUG_BSD_NATIVE_THREADS -- goto Terminate; --#endif -- break; -- case CTX_UC: /* 3) */ -- /* context is a ucontext_t */ -- record_uc(javaThread, &thread->ctx.uc); --#ifdef DEBUG_BSD_NATIVE_THREADS -- goto Terminate; --#endif -- break; -- default: --#ifdef DEBUG_BSD_NATIVE_THREADS -- fprintf(stderr, "ctxtype failed %d.\n", thread->ctxtype); -- goto TermFailed; --#endif -- break; -- } -- --#ifdef DEBUG_BSD_NATIVE_THREADS --TermFailed: -- fprintf(stderr, "Failed to find pthread struct.\n"); fflush(stderr); -- assert(0); -- --Terminate: -- dumpThreadStates(); --#endif - } -- --void record_uc(sys_thread_t *t, ucontext_t *uc) --{ -- mcontext_t *mc = &(uc->uc_mcontext); -- -- t->regs[0] = mc->mc_eax; -- t->regs[1] = mc->mc_ecx; -- t->regs[2] = mc->mc_edx; -- t->regs[3] = mc->mc_ebx; -- t->regs[4] = mc->mc_ebp; -- t->regs[5] = mc->mc_esi; -- t->regs[6] = mc->mc_edi; --} -- --/* --From /usr/src/lib/libc/i386/gen/_setjmp.S: --ENTRY(_setjmp) -- movl 4(%esp),%eax -- movl 0(%esp),%edx -- movl %edx, 0(%eax) / * rta * / -- movl %ebx, 4(%eax) -- movl %esp, 8(%eax) -- movl %ebp,12(%eax) -- movl %esi,16(%eax) -- movl %edi,20(%eax) -- fnstcw 24(%eax) -- xorl %eax,%eax -- ret -- --typedef JmpBufStruct --{ -- int edx, // Accumulator for operands and results data. -- ebx, // Pointer to data in the DS segment. -- esp, // Stack pointer (in the SS segment). -- ebp, // Pointer to data on the stack (in the SS segment). -- esi, // Pointer to data in the segment pointer to by the DS register; source pointer for string operations. -- edi; // Pointer to data (or destination) in the segment pointer to by the ES register; destination pointer for string operations. -- --} JmpBufStruct; -- -- --void record_jb(sys_thread_t *t, JmpBufStruct *jb) --{ -- t->regs[0] = jb->eax; // What about these two register ? they seem missing in jmp_buf. -- t->regs[1] = / *jb->ecx;* / 0; -- t->regs[2] = jb->edx; // The rest of these registers are defined... -- t->regs[3] = jb->ebx; -- t->regs[4] = jb->ebp; -- t->regs[5] = jb->esi; -- t->regs[6] = jb->edi; --} --*/ -- --#if 0 --static void --finish_suspension(void *arg) --{ -- if (_thread_run->suspended != SUSP_NO) -- _thread_kern_sched_state(PS_SUSPENDED, __FILE__, __LINE__); --} -- --void _pthread_suspend_np_by_pthread_common(pthread_t thread) --{ --struct timeval tv; --struct timespec current_ts; -- -- switch (thread->state) { -- case PS_RUNNING: -- /* -- * Remove the thread from the priority queue and -- * set the state to suspended: -- */ -- PTHREAD_PRIOQ_REMOVE(thread); -- PTHREAD_SET_STATE(thread, PS_SUSPENDED); -- break; -- -- case PS_SPINBLOCK: -- case PS_FDR_WAIT: -- case PS_FDW_WAIT: -- case PS_POLL_WAIT: -- case PS_SELECT_WAIT: -- /* -- * Remove these threads from the work queue -- * and mark the operation as interrupted: -- */ -- if ((thread->flags & PTHREAD_FLAGS_IN_WORKQ) != 0) -- PTHREAD_WORKQ_REMOVE(thread); -- _thread_seterrno(thread,EINTR); -- -- /* FALLTHROUGH */ -- case PS_SLEEP_WAIT: -- thread->interrupted = 1; -- -- /* FALLTHROUGH */ -- case PS_SIGTHREAD: -- case PS_WAIT_WAIT: -- case PS_SIGSUSPEND: -- case PS_SIGWAIT: -- /* -- * Remove these threads from the waiting queue and -- * set their state to suspended: -- */ -- PTHREAD_WAITQ_REMOVE(thread); -- PTHREAD_SET_STATE(thread, PS_SUSPENDED); -- break; -- -- case PS_MUTEX_WAIT: -- /* Mark the thread as suspended and still in a queue. */ -- thread->suspended = SUSP_MUTEX_WAIT; -- -- PTHREAD_SET_STATE(thread, PS_SUSPENDED); -- break; -- case PS_COND_WAIT: --#if 0 -- /* This is for a pthreads_cond_timedwait() --billh */ -- if (thread->wakeup_time.tv_sec != -1) { -- /* (1) Use to restore the waiting-queue time that's left when the -- * thread is resumed. --billh -- */ -- _subtract_timespec3(thread, ¤t_ts, &thread->remaining_wakeup_time); -- -- /* (2) So that it's inserted at the end of the waiting queue and -- * not scanned by the uthreads_kern.c waiting queue logic. It also -- * means to make it wait forever. -- */ -- thread->wakeup_time.tv_sec = -1; -- thread->wakeup_time.tv_nsec = -1; -- -- /* (3) Remove and reinsert it at the end of waiting-queue -- * (automatic on the insertion attempt when (2)). -- */ -- PTHREAD_WORKQ_REMOVE(thread); -- PTHREAD_WORKQ_INSERT(thread); -- } --#endif -- -- /* Mark the thread as suspended and still in a queue. */ -- thread->suspended = SUSP_COND_WAIT; -- -- PTHREAD_SET_STATE(thread, PS_SUSPENDED); -- break; -- case PS_JOIN: -- /* Mark the thread as suspended and joining: */ -- thread->suspended = SUSP_JOIN; -- -- PTHREAD_NEW_STATE(thread, PS_SUSPENDED); -- break; -- case PS_FDLR_WAIT: -- case PS_FDLW_WAIT: -- case PS_FILE_WAIT: -- /* Mark the thread as suspended: */ -- thread->suspended = SUSP_YES; -- -- /* -- * Threads in these states may be in queues. -- * In order to preserve queue integrity, the -- * cancelled thread must remove itself from the -- * queue. Mark the thread as interrupted and -- * set the state to running. When the thread -- * resumes, it will remove itself from the queue -- * and call the suspension completion routine. -- */ -- thread->interrupted = 1; -- _thread_seterrno(thread, EINTR); -- PTHREAD_NEW_STATE(thread, PS_RUNNING); -- thread->continuation = finish_suspension; -- break; -- -- case PS_DEAD: -- case PS_DEADLOCK: -- case PS_STATE_MAX: -- case PS_SUSPENDED: -- /* Nothing needs to be done: */ -- break; -- } --} -- --void _pthread_resume_by_pthread_common(pthread_t thread, enum pthread_susp old_suspended) --{ --struct timeval tv; --struct timespec current_ts, -- remaining_spec; -- -- /* Is it currently suspended? */ -- if (thread->state == PS_SUSPENDED) { -- /* -- * Defer signals to protect the scheduling queues -- * from access by the signal handler: -- */ -- _thread_kern_sig_defer(); -- -- switch (old_suspended) { -- case SUSP_MUTEX_WAIT: -- /* Set the thread's state back. */ -- PTHREAD_SET_STATE(thread,PS_MUTEX_WAIT); -- break; -- case SUSP_COND_WAIT: -- /* For cases where it was doing a pthread_cond_timedwait() -- * Mark the remaining suspend time. -- * --billh -- */ --#if 0 -- if (thread->remaining_wakeup_time.tv_sec != -1) { -- GET_CURRENT_TOD(tv); -- TIMEVAL_TO_TIMESPEC(&tv, ¤t_ts); -- -- _subtract_timespec3(remaining_spec, &thread->wakeup_time, ¤t_ts); -- _thread_kern_set_timeout_by_pthread_timespec(thread, &remaining_spec); -- } --#endif -- -- /* Set the thread's state back. */ -- PTHREAD_SET_STATE(thread,PS_COND_WAIT); -- break; -- case SUSP_JOIN: -- /* Set the thread's state back. */ -- PTHREAD_SET_STATE(thread,PS_JOIN); -- break; -- case SUSP_NOWAIT: -- /* Allow the thread to run. */ -- PTHREAD_SET_STATE(thread,PS_RUNNING); -- PTHREAD_WAITQ_REMOVE(thread); -- PTHREAD_PRIOQ_INSERT_TAIL(thread); -- break; -- case SUSP_NO: -- case SUSP_YES: -- /* Allow the thread to run. */ -- PTHREAD_SET_STATE(thread,PS_RUNNING); -- PTHREAD_PRIOQ_INSERT_TAIL(thread); -- break; -- } -- -- /* -- * Undefer and handle pending signals, yielding if -- * necessary: -- */ -- _thread_kern_sig_undefer(); -- } --} -- - #endif diff --git a/java/jdk16/files/patch-threads_md.c b/java/jdk16/files/patch-threads_md.c deleted file mode 100644 index d29f1c864ecb..000000000000 --- a/java/jdk16/files/patch-threads_md.c +++ /dev/null @@ -1,12 +0,0 @@ -$FreeBSD$ - ---- ../src/solaris/hpi/native_threads/src/threads_md.c 21 Nov 2001 04:02:04 -0000 1.4 -+++ ../src/solaris/hpi/native_threads/src/threads_md.c 24 Feb 2003 03:17:30 -0000 -@@ -23,6 +23,7 @@ - #include <setjmp.h>
- #include <signal.h>
- #include <sys/types.h>
-+#include <sys/time.h>
- #include <sys/signal.h>
- #include <sys/resource.h>
- #ifdef __FreeBSD__
|