diff options
Diffstat (limited to 'sysdeps/mach')
-rw-r--r-- | sysdeps/mach/hurd/Makefile | 4 | ||||
-rw-r--r-- | sysdeps/mach/hurd/bits/libc-lock.h | 6 | ||||
-rw-r--r-- | sysdeps/mach/hurd/f_setlk.c | 2 | ||||
-rw-r--r-- | sysdeps/mach/hurd/f_setlk.h | 1 | ||||
-rw-r--r-- | sysdeps/mach/hurd/fcntl.c | 10 | ||||
-rw-r--r-- | sysdeps/mach/hurd/ftok.c | 14 | ||||
-rw-r--r-- | sysdeps/mach/hurd/hp-timing.h | 1 | ||||
-rw-r--r-- | sysdeps/mach/hurd/i386/init-first.c | 10 | ||||
-rw-r--r-- | sysdeps/mach/hurd/i386/tls.h | 10 | ||||
-rw-r--r-- | sysdeps/mach/hurd/profil.c | 2 | ||||
-rw-r--r-- | sysdeps/mach/hurd/setitimer.c | 2 | ||||
-rw-r--r-- | sysdeps/mach/hurd/shmat.c | 11 | ||||
-rw-r--r-- | sysdeps/mach/hurd/shmctl.c | 10 | ||||
-rw-r--r-- | sysdeps/mach/hurd/shmdt.c | 3 | ||||
-rw-r--r-- | sysdeps/mach/hurd/shmget.c | 10 | ||||
-rw-r--r-- | sysdeps/mach/thread_state.h | 2 |
16 files changed, 54 insertions, 44 deletions
diff --git a/sysdeps/mach/hurd/Makefile b/sysdeps/mach/hurd/Makefile index 7df96f827e..e47baa129f 100644 --- a/sysdeps/mach/hurd/Makefile +++ b/sysdeps/mach/hurd/Makefile @@ -195,6 +195,10 @@ ifeq (hurd, $(subdir)) sysdep_routines += cthreads endif +ifeq (io, $(subdir)) +sysdep_routines += f_setlk +endif + ifeq ($(subdir),sunrpc) sysdep_headers += nfs/nfs.h endif diff --git a/sysdeps/mach/hurd/bits/libc-lock.h b/sysdeps/mach/hurd/bits/libc-lock.h index a0f83728e4..0a7fb0bf8c 100644 --- a/sysdeps/mach/hurd/bits/libc-lock.h +++ b/sysdeps/mach/hurd/bits/libc-lock.h @@ -20,9 +20,9 @@ #define _BITS_LIBC_LOCK_H 1 #if (_LIBC - 0) || (_CTHREADS_ - 0) -#if (_LIBC - 0) -#include <tls.h> -#endif +# if (_LIBC - 0) +# include <tls.h> +# endif #include <cthreads.h> typedef struct mutex __libc_lock_t; diff --git a/sysdeps/mach/hurd/f_setlk.c b/sysdeps/mach/hurd/f_setlk.c index 9c898b130b..6e1b308756 100644 --- a/sysdeps/mach/hurd/f_setlk.c +++ b/sysdeps/mach/hurd/f_setlk.c @@ -29,7 +29,7 @@ int __f_setlk (int fd, int type, int whence, __off64_t start, __off64_t len, int wait) { - int cmd; + int cmd = 0; switch (type) { diff --git a/sysdeps/mach/hurd/f_setlk.h b/sysdeps/mach/hurd/f_setlk.h index a9d09fd90a..16c7a8ca8d 100644 --- a/sysdeps/mach/hurd/f_setlk.h +++ b/sysdeps/mach/hurd/f_setlk.h @@ -19,4 +19,5 @@ #define _F_SETLK_H 1 extern int __f_setlk (int fd, int type, int whence, __off64_t start, __off64_t len, int wait); + #endif /* f_setlk.h */ diff --git a/sysdeps/mach/hurd/fcntl.c b/sysdeps/mach/hurd/fcntl.c index a7ef21be1c..076f2eaa71 100644 --- a/sysdeps/mach/hurd/fcntl.c +++ b/sysdeps/mach/hurd/fcntl.c @@ -142,7 +142,7 @@ __libc_fcntl (int fd, int cmd, ...) /* FALLTHROUGH */ case F_SETLK: return __f_setlk (fd, fl->l_type, fl->l_whence, - fl->l_start, fl->l_end, wait); + fl->l_start, fl->l_len, wait); default: errno = EINVAL; return -1; @@ -153,7 +153,7 @@ __libc_fcntl (int fd, int cmd, ...) case F_SETLK64: case F_SETLKW64: { - struct flock64 *fl64 = va_arg (ap, struct flock64 *); + struct flock64 *fl = va_arg (ap, struct flock64 *); int wait = 0; va_end (ap); switch (cmd) @@ -161,12 +161,12 @@ __libc_fcntl (int fd, int cmd, ...) case F_GETLK64: errno = ENOSYS; return -1; - case F_SETLK64: + case F_SETLKW64: wait = 1; /* FALLTHROUGH */ - case F_SETLKW64: + case F_SETLK64: return __f_setlk (fd, fl->l_type, fl->l_whence, - fl->l_start, fl->l_end, wait); + fl->l_start, fl->l_len, wait); default: errno = EINVAL; return -1; diff --git a/sysdeps/mach/hurd/ftok.c b/sysdeps/mach/hurd/ftok.c index 87dcf71073..a6aba15c86 100644 --- a/sysdeps/mach/hurd/ftok.c +++ b/sysdeps/mach/hurd/ftok.c @@ -1,6 +1,6 @@ -/* Copyright (C) 1995-2015 Free Software Foundation, Inc. +/* SysV ftok for Hurd. + Copyright (C) 1995-2015 Free Software Foundation, Inc. This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -13,17 +13,17 @@ Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ #include <sys/ipc.h> #include <sys/stat.h> /* In the Hurd, we use the second-to-most-significant bit as flag for - private keys. We use a different order of the components so that - the biggest one---the inode number---is affected by this. */ + private keys. We use an order of the components different from the generic + code in sysvipc/ftok.c so that the biggest one--the inode number--is + affected by this. */ key_t ftok (pathname, proj_id) diff --git a/sysdeps/mach/hurd/hp-timing.h b/sysdeps/mach/hurd/hp-timing.h index 29a8839d70..1246e21958 100644 --- a/sysdeps/mach/hurd/hp-timing.h +++ b/sysdeps/mach/hurd/hp-timing.h @@ -25,6 +25,7 @@ /* Provide dummy definitions. */ #define HP_TIMING_AVAIL (0) +#define HP_SMALL_TIMING_AVAIL (0) #define HP_TIMING_INLINE (0) typedef int hp_timing_t; #define HP_TIMING_ZERO(Var) diff --git a/sysdeps/mach/hurd/i386/init-first.c b/sysdeps/mach/hurd/i386/init-first.c index 731509d8fd..064561a63d 100644 --- a/sysdeps/mach/hurd/i386/init-first.c +++ b/sysdeps/mach/hurd/i386/init-first.c @@ -112,9 +112,7 @@ init1 (int argc, char *arg0, ...) then after the environment pointers there is no Hurd data block; the argument strings start there. */ if ((void *) d == argv[0]) - { - return; - } + return; #ifndef SHARED __libc_enable_secure = d->flags & EXEC_SECURE; @@ -192,9 +190,9 @@ init (int *data) assert (d->phdrsz % sizeof (ElfW(Phdr)) == 0); } - /* We need to setup TLS before starting sigthread */ - extern void __pthread_initialize_minimal(void); - __pthread_initialize_minimal(); + /* We need to setup TLS before starting the signal thread. */ + extern void __pthread_initialize_minimal (void); + __pthread_initialize_minimal (); #endif diff --git a/sysdeps/mach/hurd/i386/tls.h b/sysdeps/mach/hurd/i386/tls.h index 1b6fe67af2..3fc3e2cfaa 100644 --- a/sysdeps/mach/hurd/i386/tls.h +++ b/sysdeps/mach/hurd/i386/tls.h @@ -37,6 +37,8 @@ # define __i386_set_gdt(thr, sel, desc) ((void) (thr), (void) (sel), (void) (desc), MIG_BAD_ID) # endif +#define __i386_selector_is_ldt(sel) (!!((sel) & 4)) + # include <errno.h> # include <assert.h> @@ -108,7 +110,7 @@ _hurd_tls_init (tcbhead_t *tcb, int secondcall) /* Fetch the selector set by the first call. */ int sel; asm ("mov %%gs, %w0" : "=q" (sel) : "0" (0)); - if (__builtin_expect (sel, 0x48) & 4) /* LDT selector */ + if (__glibc_unlikely (__i386_selector_is_ldt(sel))) { kern_return_t err = __i386_set_ldt (self, sel, &desc, 1); assert_perror (err); @@ -189,7 +191,7 @@ _hurd_tls_fork (thread_t child, thread_t orig, struct i386_thread_state *state) kern_return_t err; unsigned int count = 1; - if (__builtin_expect (sel, 0x48) & 4) /* LDT selector */ + if (__glibc_unlikely (__i386_selector_is_ldt(sel))) err = __i386_get_ldt (orig, sel, 1, &_desc, &count); else err = __i386_get_gdt (orig, sel, &desc); @@ -198,7 +200,7 @@ _hurd_tls_fork (thread_t child, thread_t orig, struct i386_thread_state *state) if (err) return err; - if (__builtin_expect (sel, 0x48) & 4) /* LDT selector */ + if (__glibc_unlikely (__i386_selector_is_ldt(sel))) err = __i386_set_ldt (child, sel, &desc, 1); else err = __i386_set_gdt (child, &sel, desc); @@ -222,7 +224,7 @@ _hurd_tls_new (thread_t child, struct i386_thread_state *state, tcbhead_t *tcb) tcb->tcb = tcb; tcb->self = child; - if (__builtin_expect (sel, 0x48) & 4) /* LDT selector */ + if (__glibc_unlikely (__i386_selector_is_ldt(sel))) err = __i386_set_ldt (child, sel, &desc, 1); else err = __i386_set_gdt (child, &sel, desc); diff --git a/sysdeps/mach/hurd/profil.c b/sysdeps/mach/hurd/profil.c index 0422867b98..dbedeb22a2 100644 --- a/sysdeps/mach/hurd/profil.c +++ b/sysdeps/mach/hurd/profil.c @@ -69,7 +69,7 @@ update_waiter (u_short *sample_buffer, size_t size, size_t offset, u_int scale) err = __mach_setup_thread (__mach_task_self (), profile_thread, &profile_waiter, NULL, NULL); if (! err) - err = __mach_setup_tls(profile_thread); + err = __mach_setup_tls (profile_thread); } else err = 0; diff --git a/sysdeps/mach/hurd/setitimer.c b/sysdeps/mach/hurd/setitimer.c index f8235d977f..5294b46787 100644 --- a/sysdeps/mach/hurd/setitimer.c +++ b/sysdeps/mach/hurd/setitimer.c @@ -230,7 +230,7 @@ setitimer_locked (const struct itimerval *new, struct itimerval *old, &timer_thread, &_hurd_itimer_thread_stack_base, &_hurd_itimer_thread_stack_size)) - || (err = __mach_setup_tls(_hurd_itimer_thread))) + || (err = __mach_setup_tls (_hurd_itimer_thread))) { __thread_terminate (_hurd_itimer_thread); _hurd_itimer_thread = MACH_PORT_NULL; diff --git a/sysdeps/mach/hurd/shmat.c b/sysdeps/mach/hurd/shmat.c index 89db806e25..6bc88705b8 100644 --- a/sysdeps/mach/hurd/shmat.c +++ b/sysdeps/mach/hurd/shmat.c @@ -1,4 +1,5 @@ -/* Copyright (C) 2005-2015 Free Software Foundation, Inc. +/* SysV shmat for Hurd. + Copyright (C) 2005-2015 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 @@ -12,9 +13,8 @@ Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ #include <errno.h> #include <utime.h> @@ -54,7 +54,9 @@ __shmat (int shmid, const void *shmaddr, int shmflg) res = __fstat (fd, &statbuf); if (res < 0) { + err = errno; __close (fd); + errno = err; return (void *) -1; } @@ -69,6 +71,7 @@ __shmat (int shmid, const void *shmaddr, int shmflg) if (err) { munmap (addr, statbuf.st_size); + errno = err; return (void *) -1; } diff --git a/sysdeps/mach/hurd/shmctl.c b/sysdeps/mach/hurd/shmctl.c index 192e567b7a..a991a0c8de 100644 --- a/sysdeps/mach/hurd/shmctl.c +++ b/sysdeps/mach/hurd/shmctl.c @@ -1,4 +1,5 @@ -/* Copyright (C) 2005-2015 Free Software Foundation, Inc. +/* SysV shmctl for Hurd. + Copyright (C) 2005-2015 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 @@ -12,9 +13,8 @@ Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ #include <errno.h> #include <stdio.h> @@ -27,7 +27,7 @@ #include "sysvshm.h" -/* Provide operations to control over shared memory segments. */ +/* Provide operations to control shared memory segments. */ int __shmctl (int id, int cmd, struct shmid_ds *buf) { diff --git a/sysdeps/mach/hurd/shmdt.c b/sysdeps/mach/hurd/shmdt.c index 245fd55a89..988fab8ee6 100644 --- a/sysdeps/mach/hurd/shmdt.c +++ b/sysdeps/mach/hurd/shmdt.c @@ -1,4 +1,5 @@ -/* Copyright (C) 2005-2015 Free Software Foundation, Inc. +/* SysV shmdt for Hurd. + Copyright (C) 2005-2015 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/sysdeps/mach/hurd/shmget.c b/sysdeps/mach/hurd/shmget.c index b536b3a701..2065b41989 100644 --- a/sysdeps/mach/hurd/shmget.c +++ b/sysdeps/mach/hurd/shmget.c @@ -1,4 +1,5 @@ -/* Copyright (C) 2005-2015 Free Software Foundation, Inc. +/* SysV shmget for Hurd. + Copyright (C) 2005-2015 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 @@ -12,9 +13,8 @@ Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ #include <stdbool.h> #include <stdlib.h> @@ -95,7 +95,7 @@ get_exclusive (int shmflags, size_t size, key_t *r_key, int *r_fd) key = SHM_PRIV_KEY_START; /* Try to link the shared memory segment into the filesystem - (exclusively). Private segments have negative keys. */ + (exclusively). */ do { sprintf (filename, SHM_NAMEPRI, key); diff --git a/sysdeps/mach/thread_state.h b/sysdeps/mach/thread_state.h index 357c8bfbea..a6d3634070 100644 --- a/sysdeps/mach/thread_state.h +++ b/sysdeps/mach/thread_state.h @@ -38,7 +38,7 @@ #endif #endif #ifndef MACHINE_THREAD_STATE_FIX_NEW -#define MACHINE_THREAD_STATE_FIX_NEW(ts) +# define MACHINE_THREAD_STATE_FIX_NEW(ts) #endif /* These functions are of use in machine-dependent signal trampoline |