diff options
Diffstat (limited to 'mach')
-rw-r--r-- | mach/Machrules | 2 | ||||
-rw-r--r-- | mach/Makefile | 4 | ||||
-rw-r--r-- | mach/devstream.c | 2 | ||||
-rw-r--r-- | mach/lock-intern.h | 22 | ||||
-rw-r--r-- | mach/mach.h | 5 | ||||
-rw-r--r-- | mach/mach/mach_traps.h | 2 | ||||
-rw-r--r-- | mach/mach/mig_support.h | 5 | ||||
-rw-r--r-- | mach/mach_init.c | 2 | ||||
-rw-r--r-- | mach/mach_init.h | 2 | ||||
-rw-r--r-- | mach/mig-alloc.c | 2 | ||||
-rw-r--r-- | mach/mig-dealloc.c | 2 | ||||
-rw-r--r-- | mach/mig-reply.c | 2 | ||||
-rw-r--r-- | mach/msgserver.c | 2 | ||||
-rw-r--r-- | mach/mutex-init.c | 2 | ||||
-rw-r--r-- | mach/mutex-solid.c | 2 | ||||
-rw-r--r-- | mach/setup-thread.c | 32 | ||||
-rw-r--r-- | mach/spin-lock.c | 1 | ||||
-rw-r--r-- | mach/spin-lock.h | 2 | ||||
-rw-r--r-- | mach/spin-solid.c | 2 |
19 files changed, 75 insertions, 20 deletions
diff --git a/mach/Machrules b/mach/Machrules index ac0197a9bd..8b35cf6690 100644 --- a/mach/Machrules +++ b/mach/Machrules @@ -1,5 +1,5 @@ # Rules for MiG interfaces that want to go into the C library. -# Copyright (C) 1991-2013 Free Software Foundation, Inc. +# Copyright (C) 1991-2014 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or diff --git a/mach/Makefile b/mach/Makefile index 08bb3757e1..5131e26009 100644 --- a/mach/Makefile +++ b/mach/Makefile @@ -1,4 +1,4 @@ -# Copyright (C) 1991-2013 Free Software Foundation, Inc. +# Copyright (C) 1991-2014 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or @@ -111,7 +111,7 @@ ifndef mach-shortcuts # $(mach-shortcuts) will be set, and that will change how # mach_interface.defs is processed: it will get the -D flags below. user-interfaces := $(filter-out $(mach-interface-list:%=mach/%) \ - mach/mach_port mach/mach_host mach/mach4 \ + mach/mach_port mach/mach_host mach/mach4 mach/gnumach \ device/device_request,\ $(user-interfaces)) endif diff --git a/mach/devstream.c b/mach/devstream.c index 0fc837bf87..66ad9193d5 100644 --- a/mach/devstream.c +++ b/mach/devstream.c @@ -1,6 +1,6 @@ /* stdio on a Mach device port. Translates \n to \r\n on output, echos and translates \r to \n on input. - Copyright (C) 1992-2013 Free Software Foundation, Inc. + Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or diff --git a/mach/lock-intern.h b/mach/lock-intern.h index 0a5df7aa09..6d315bbb6b 100644 --- a/mach/lock-intern.h +++ b/mach/lock-intern.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1994-2013 Free Software Foundation, Inc. +/* Copyright (C) 1994-2014 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -28,11 +28,15 @@ /* Initialize LOCK. */ +void __spin_lock_init (__spin_lock_t *__lock); + +#ifdef __USE_EXTERN_INLINES _EXTERN_INLINE void __spin_lock_init (__spin_lock_t *__lock) { *__lock = __SPIN_LOCK_INITIALIZER; } +#endif /* Lock LOCK, blocking if we can't get it. */ @@ -40,12 +44,16 @@ extern void __spin_lock_solid (__spin_lock_t *__lock); /* Lock the spin lock LOCK. */ +void __spin_lock (__spin_lock_t *__lock); + +#ifdef __USE_EXTERN_INLINES _EXTERN_INLINE void __spin_lock (__spin_lock_t *__lock) { if (! __spin_try_lock (__lock)) __spin_lock_solid (__lock); } +#endif /* Name space-clean internal interface to mutex locks. @@ -70,27 +78,39 @@ extern void __mutex_unlock_solid (void *__lock); /* Lock the mutex lock LOCK. */ +void __mutex_lock (void *__lock); + +#ifdef __USE_EXTERN_INLINES _EXTERN_INLINE void __mutex_lock (void *__lock) { if (! __spin_try_lock ((__spin_lock_t *) __lock)) __mutex_lock_solid (__lock); } +#endif /* Unlock the mutex lock LOCK. */ +void __mutex_unlock (void *__lock); + +#ifdef __USE_EXTERN_INLINES _EXTERN_INLINE void __mutex_unlock (void *__lock) { __spin_unlock ((__spin_lock_t *) __lock); __mutex_unlock_solid (__lock); } +#endif +int __mutex_trylock (void *__lock); + +#ifdef __USE_EXTERN_INLINES _EXTERN_INLINE int __mutex_trylock (void *__lock) { return __spin_try_lock ((__spin_lock_t *) __lock); } +#endif #endif /* lock-intern.h */ diff --git a/mach/mach.h b/mach/mach.h index cf92171ec3..f70a45375c 100644 --- a/mach/mach.h +++ b/mach/mach.h @@ -1,5 +1,5 @@ /* Standard header for all Mach programs. - Copyright (C) 1993-2013 Free Software Foundation, Inc. + Copyright (C) 1993-2014 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -100,5 +100,8 @@ kern_return_t mach_setup_thread (task_t task, thread_t thread, void *pc, vm_address_t *stack_base, vm_size_t *stack_size); +/* Give THREAD a TLS area. */ +kern_return_t __mach_setup_tls (thread_t thread); +kern_return_t mach_setup_tls (thread_t thread); #endif /* mach.h */ diff --git a/mach/mach/mach_traps.h b/mach/mach/mach_traps.h index 8dbda6a256..1c0bdf2278 100644 --- a/mach/mach/mach_traps.h +++ b/mach/mach/mach_traps.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1994-2013 Free Software Foundation, Inc. +/* Copyright (C) 1994-2014 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or diff --git a/mach/mach/mig_support.h b/mach/mach/mig_support.h index d73eafc9c3..0d0a61bb41 100644 --- a/mach/mach/mig_support.h +++ b/mach/mach/mig_support.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1993-2013 Free Software Foundation, Inc. +/* Copyright (C) 1993-2014 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -66,6 +66,8 @@ extern void mig_reply_setup (const mach_msg_header_t *__request, /* Idiocy support function. */ extern vm_size_t mig_strncpy (char *__dst, const char *__src, vm_size_t __len); extern vm_size_t __mig_strncpy (char *__dst, const char *__src, vm_size_t); + +#ifdef __USE_EXTERN_INLINES __extern_inline vm_size_t __mig_strncpy (char *__dst, const char *__src, vm_size_t __len) { @@ -76,6 +78,7 @@ mig_strncpy (char *__dst, const char *__src, vm_size_t __len) { return __mig_strncpy (__dst, __src, __len); } +#endif diff --git a/mach/mach_init.c b/mach/mach_init.c index e1ec8eac14..0aa8155572 100644 --- a/mach/mach_init.c +++ b/mach/mach_init.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1992-2013 Free Software Foundation, Inc. +/* Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or diff --git a/mach/mach_init.h b/mach/mach_init.h index 98540333ba..d7ca27f1b7 100644 --- a/mach/mach_init.h +++ b/mach/mach_init.h @@ -1,5 +1,5 @@ /* Declarations and macros for the basic Mach things set at startup. - Copyright (C) 1993-2013 Free Software Foundation, Inc. + Copyright (C) 1993-2014 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or diff --git a/mach/mig-alloc.c b/mach/mig-alloc.c index 7920345e4b..383e0d01ea 100644 --- a/mach/mig-alloc.c +++ b/mach/mig-alloc.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1992-2013 Free Software Foundation, Inc. +/* Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or diff --git a/mach/mig-dealloc.c b/mach/mig-dealloc.c index 1a3f74e6e1..0c658070f4 100644 --- a/mach/mig-dealloc.c +++ b/mach/mig-dealloc.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1992-2013 Free Software Foundation, Inc. +/* Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or diff --git a/mach/mig-reply.c b/mach/mig-reply.c index c2898ece3e..871aa33dfe 100644 --- a/mach/mig-reply.c +++ b/mach/mig-reply.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1992-2013 Free Software Foundation, Inc. +/* Copyright (C) 1992-2014 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or diff --git a/mach/msgserver.c b/mach/msgserver.c index a77377b6d9..711800a10b 100644 --- a/mach/msgserver.c +++ b/mach/msgserver.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1993-2013 Free Software Foundation, Inc. +/* Copyright (C) 1993-2014 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or diff --git a/mach/mutex-init.c b/mach/mutex-init.c index d5010334ca..fc3a5e5c3d 100644 --- a/mach/mutex-init.c +++ b/mach/mutex-init.c @@ -1,5 +1,5 @@ /* Initialize a cthreads mutex structure. - Copyright (C) 1995-2013 Free Software Foundation, Inc. + Copyright (C) 1995-2014 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or diff --git a/mach/mutex-solid.c b/mach/mutex-solid.c index 61a09ef977..70e8333944 100644 --- a/mach/mutex-solid.c +++ b/mach/mutex-solid.c @@ -1,5 +1,5 @@ /* Stub versions of mutex_lock_solid/mutex_unlock_solid for no -lthreads. - Copyright (C) 1995-2013 Free Software Foundation, Inc. + Copyright (C) 1995-2014 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or diff --git a/mach/setup-thread.c b/mach/setup-thread.c index e1582d1937..2fab79c391 100644 --- a/mach/setup-thread.c +++ b/mach/setup-thread.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991-2013 Free Software Foundation, Inc. +/* Copyright (C) 1991-2014 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -19,6 +19,7 @@ #include <thread_state.h> #include <string.h> #include <mach/machine/vm_param.h> +#include <ldsodefs.h> #include "sysdep.h" /* Defines stack direction. */ #define STACK_SIZE (16 * 1024 * 1024) /* 16MB, arbitrary. */ @@ -72,8 +73,35 @@ __mach_setup_thread (task_t task, thread_t thread, void *pc, if (error = __vm_protect (task, stack, __vm_page_size, 0, VM_PROT_NONE)) return error; - return __thread_set_state (thread, MACHINE_THREAD_STATE_FLAVOR, + return __thread_set_state (thread, MACHINE_NEW_THREAD_STATE_FLAVOR, (natural_t *) &ts, tssize); } weak_alias (__mach_setup_thread, mach_setup_thread) + +/* Give THREAD a TLS area. */ +kern_return_t +__mach_setup_tls (thread_t thread) +{ + kern_return_t error; + struct machine_thread_state ts; + mach_msg_type_number_t tssize = MACHINE_THREAD_STATE_COUNT; + tcbhead_t *tcb; + + if (error = __thread_get_state (thread, MACHINE_THREAD_STATE_FLAVOR, + (natural_t *) &ts, &tssize)) + return error; + assert (tssize == MACHINE_THREAD_STATE_COUNT); + + tcb = _dl_allocate_tls (NULL); + if (tcb == NULL) + return KERN_RESOURCE_SHORTAGE; + + _hurd_tls_new (thread, &ts, tcb); + + error = __thread_set_state (thread, MACHINE_THREAD_STATE_FLAVOR, + (natural_t *) &ts, tssize); + return error; +} + +weak_alias (__mach_setup_tls, mach_setup_tls) diff --git a/mach/spin-lock.c b/mach/spin-lock.c index aaebc55cf4..1b1e69c8d6 100644 --- a/mach/spin-lock.c +++ b/mach/spin-lock.c @@ -1,3 +1,4 @@ +#define __USE_EXTERN_INLINES 1 #define _EXTERN_INLINE /* Empty to define the real functions. */ #include "spin-lock.h" diff --git a/mach/spin-lock.h b/mach/spin-lock.h index 6fb07c5084..fc21b1e984 100644 --- a/mach/spin-lock.h +++ b/mach/spin-lock.h @@ -1,5 +1,5 @@ /* Definitions of user-visible names for spin locks. - Copyright (C) 1994-2013 Free Software Foundation, Inc. + Copyright (C) 1994-2014 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or diff --git a/mach/spin-solid.c b/mach/spin-solid.c index 9a3326bda5..e1e154bdd6 100644 --- a/mach/spin-solid.c +++ b/mach/spin-solid.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1994-2013 Free Software Foundation, Inc. +/* Copyright (C) 1994-2014 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or |