]> sourceware.org Git - glibc.git/commitdiff
* mach/errsystems.awk: Include <errno.h> in generated output.
authorRoland McGrath <roland@gnu.org>
Sun, 16 Feb 2003 03:55:27 +0000 (03:55 +0000)
committerRoland McGrath <roland@gnu.org>
Sun, 16 Feb 2003 03:55:27 +0000 (03:55 +0000)
ChangeLog
mach/errsystems.awk
sysdeps/mach/hurd/i386/tls.h
sysdeps/mach/hurd/tls.h

index ad1aa6bc7c16b78f227204031f0c5b36163f1fff..5938d27a4b42603eda32c6784fb34694de8be0ed 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,8 @@
        * sysdeps/mach/hurd/tls.h: New file.
        * sysdeps/mach/hurd/i386/tls.h: New file.
 
+       * mach/errsystems.awk: Include <errno.h> in generated output.
+
        * sysdeps/mach/Makefile (mach-before-compile rule): Pass generating=t,
        use target mach-before-compile instead of generated.
        (mach-before-compile): New target.
index b01c1bd0eb1d24b913d537aae88edf044867651a..a5e93604bc20b6dea64cbc4fa0f7f4a759fb9352 100644 (file)
@@ -1,6 +1,8 @@
 BEGIN {
-  print "#include <mach/error.h>\n#include <errorlib.h>";
-  print "#define static static const"
+  print "#include <errno.h>";
+  print "#include <mach/error.h>";
+  print "#include <errorlib.h>";
+  print "#define static static const";
   nsubs = split(subsys, subs);
   while (nsubs > 0) printf "#include \"%s\"\n", subs[nsubs--];
   print "\n\n\
index 454d16472aecc62d39cba62622aa6c15c295e3c6..4b213495457e6bc7d5f9d4ae63fe8acc6f469653 100644 (file)
 /* Indiciate that TLS support is available.  */
 # define USE_TLS       1
 
+/* The TCB can have any size and the memory following the address the
+   thread pointer points to is unspecified.  Allocate the TCB there.  */
+# define TLS_TCB_AT_TP 1
+
+# ifndef ASSEMBLER
+
 /* Use i386-specific RPCs to arrange that %gs segment register prefix
    addresses the TCB in each thread.  */
 # include <mach/i386/mach_i386.h>
 
-#ifndef HAVE_I386_SET_GDT
-# define __i386_set_gdt(thr, sel, desc) ((thr), (sel), (desc), MIG_BAD_ID)
-#endif
+# ifndef HAVE_I386_SET_GDT
+#  define __i386_set_gdt(thr, sel, desc) ((thr), (sel), (desc), MIG_BAD_ID)
+# endif
 
-static inline int _hurd_tls_init (tcbhead_t *, int secondcall)
-     __attribute__ ((unused));
+# include <errno.h>
+# include <assert.h>
 
-static inline const char *
+static inline const char * __attribute__ ((unused))
 _hurd_tls_init (tcbhead_t *tcb, int secondcall)
 {
   const unsigned int base = (unsigned int) tcb;
-  const struct descriptor desc =
+  struct descriptor desc =
     {                          /* low word: */
       0xffff                   /* limit 0..15 */
       | (base << 16)           /* base 0..15 */
@@ -62,7 +68,7 @@ _hurd_tls_init (tcbhead_t *tcb, int secondcall)
 
       /* Get the first available selector.  */
       int sel = -1;
-      error_t err = __i386_set_gdt (tcb->self, &sel, &desc);
+      error_t err = __i386_set_gdt (tcb->self, &sel, desc);
       if (err == MIG_BAD_ID)
        {
          /* Old kernel, use a per-thread LDT.  */
@@ -93,7 +99,7 @@ _hurd_tls_init (tcbhead_t *tcb, int secondcall)
        }
       else
        {
-         error_t err = __i386_set_gdt (tcb->self, &sel, &desc);
+         error_t err = __i386_set_gdt (tcb->self, &sel, desc);
          assert_perror (err);
          return "i386_set_gdt failed";
        }
@@ -116,7 +122,7 @@ _hurd_tls_init (tcbhead_t *tcb, int secondcall)
 # define THREAD_DTV() \
   ({ void *_dtv; __asm__ ("movl %%gs:0, %0" : "=r" (_dtv)); _dtv; })
 
-
+# endif        /* !ASSEMBLER */
 #endif /* HAVE_TLS_SUPPORT */
 
 #endif /* i386/tls.h */
index f550ed3a517a35a9a32e0490325f295f174de7c7..bc15b4dab674883f1871b8febf5f636ce7368a4e 100644 (file)
 #ifndef _TLS_H
 #define _TLS_H
 
-#ifdef HAVE_TLS_SUPPORT
+#if defined HAVE_TLS_SUPPORT && !defined ASSEMBLER
+
+# include <stddef.h>
+# include <mach/mig_errors.h>
+# include <mach.h>
+
 
 /* Type for the dtv.  */
 typedef union dtv
@@ -38,6 +43,7 @@ typedef struct
   thread_t self;               /* This thread's control port.  */
 } tcbhead_t;
 
+
 /* This is the size of the initial TCB.  */
 # define TLS_INIT_TCB_SIZE sizeof (tcbhead_t)
 
@@ -50,6 +56,17 @@ typedef struct
 /* Alignment requirements for the TCB.  */
 # define TLS_TCB_ALIGN TLS_INIT_TCB_ALIGN /* XXX */
 
+
+/* Install the dtv pointer.  The pointer passed is to the element with
+   index -1 which contain the length.  */
+# define INSTALL_DTV(descr, dtvp) \
+  ((tcbhead_t *) (descr))->dtv = (dtvp) + 1
+
+/* Return dtv of given thread descriptor.  */
+# define GET_DTV(descr) \
+  (((tcbhead_t *) (descr))->dtv)
+
 #endif /* HAVE_TLS_SUPPORT */
 
+
 #endif /* tls.h */
This page took 0.059555 seconds and 5 git commands to generate.