diff options
-rw-r--r-- | arch/arm/bits/fcntl.h | 3 | ||||
-rw-r--r-- | arch/i386/bits/fcntl.h | 3 | ||||
-rw-r--r-- | arch/microblaze/bits/fcntl.h | 3 | ||||
-rw-r--r-- | arch/mips/bits/fcntl.h | 21 | ||||
-rw-r--r-- | arch/powerpc/bits/socket.h | 7 | ||||
-rw-r--r-- | arch/x86_64/bits/fcntl.h | 3 | ||||
-rw-r--r-- | include/fcntl.h | 4 | ||||
-rw-r--r-- | include/pthread.h | 5 | ||||
-rw-r--r-- | include/sys/mtio.h | 188 | ||||
-rw-r--r-- | src/ldso/dynlink.c | 2 | ||||
-rw-r--r-- | src/ldso/powerpc/start.s | 8 | ||||
-rw-r--r-- | src/thread/pthread_attr_get.c | 5 | ||||
-rw-r--r-- | src/thread/pthread_getcpuclockid.c | 6 | ||||
-rw-r--r-- | src/thread/pthread_mutex_getprioceiling.c | 6 | ||||
-rw-r--r-- | src/thread/pthread_mutex_setprioceiling.c | 6 | ||||
-rw-r--r-- | src/thread/pthread_mutexattr_setprotocol.c | 7 |
16 files changed, 252 insertions, 25 deletions
diff --git a/arch/arm/bits/fcntl.h b/arch/arm/bits/fcntl.h index c0afa615..9595f9ca 100644 --- a/arch/arm/bits/fcntl.h +++ b/arch/arm/bits/fcntl.h @@ -10,15 +10,12 @@ #define O_DIRECTORY 040000 #define O_NOFOLLOW 0100000 #define O_CLOEXEC 02000000 -#define O_SEARCH 010000000 -#define O_EXEC 010000000 #define O_ASYNC 020000 #define O_DIRECT 0200000 #define O_LARGEFILE 0400000 #define O_NOATIME 01000000 #define O_NDELAY O_NONBLOCK -#define O_PATH 010000000 #define F_DUPFD 0 #define F_GETFD 1 diff --git a/arch/i386/bits/fcntl.h b/arch/i386/bits/fcntl.h index 04b7484c..69f3a8f5 100644 --- a/arch/i386/bits/fcntl.h +++ b/arch/i386/bits/fcntl.h @@ -10,15 +10,12 @@ #define O_DIRECTORY 0200000 #define O_NOFOLLOW 0400000 #define O_CLOEXEC 02000000 -#define O_SEARCH 010000000 -#define O_EXEC 010000000 #define O_ASYNC 020000 #define O_DIRECT 040000 #define O_LARGEFILE 0100000 #define O_NOATIME 01000000 #define O_NDELAY O_NONBLOCK -#define O_PATH 010000000 #define F_DUPFD 0 #define F_GETFD 1 diff --git a/arch/microblaze/bits/fcntl.h b/arch/microblaze/bits/fcntl.h index 04b7484c..69f3a8f5 100644 --- a/arch/microblaze/bits/fcntl.h +++ b/arch/microblaze/bits/fcntl.h @@ -10,15 +10,12 @@ #define O_DIRECTORY 0200000 #define O_NOFOLLOW 0400000 #define O_CLOEXEC 02000000 -#define O_SEARCH 010000000 -#define O_EXEC 010000000 #define O_ASYNC 020000 #define O_DIRECT 040000 #define O_LARGEFILE 0100000 #define O_NOATIME 01000000 #define O_NDELAY O_NONBLOCK -#define O_PATH 010000000 #define F_DUPFD 0 #define F_GETFD 1 diff --git a/arch/mips/bits/fcntl.h b/arch/mips/bits/fcntl.h index 116852e2..c681d237 100644 --- a/arch/mips/bits/fcntl.h +++ b/arch/mips/bits/fcntl.h @@ -1,23 +1,20 @@ +#define O_CREAT 0400 +#define O_EXCL 02000 +#define O_NOCTTY 04000 +#define O_TRUNC 01000 #define O_APPEND 0010 +#define O_NONBLOCK 0200 #define O_DSYNC 0020 #define O_SYNC 040020 #define O_RSYNC 040020 -#define O_NONBLOCK 0200 -#define O_CREAT 0400 -#define O_TRUNC 01000 -#define O_EXCL 02000 -#define O_NOCTTY 04000 -#define O_ASYNC 010000 -#define O_LARGEFILE 020000 -#define O_DIRECT 0100000 #define O_DIRECTORY 0200000 #define O_NOFOLLOW 0400000 -#define O_NOATIME 01000000 #define O_CLOEXEC 02000000 -#define O_PATH 010000000 -#define O_SEARCH 010000000 -#define O_EXEC 010000000 +#define O_ASYNC 010000 +#define O_DIRECT 0100000 +#define O_LARGEFILE 020000 +#define O_NOATIME 01000000 #define O_NDELAY O_NONBLOCK #define F_DUPFD 0 diff --git a/arch/powerpc/bits/socket.h b/arch/powerpc/bits/socket.h index 3d97193a..26d1010f 100644 --- a/arch/powerpc/bits/socket.h +++ b/arch/powerpc/bits/socket.h @@ -9,6 +9,13 @@ struct msghdr unsigned msg_flags; }; +struct cmsghdr +{ + socklen_t cmsg_len; + int cmsg_level; + int cmsg_type; +}; + #define SO_DEBUG 1 #define SO_REUSEADDR 2 #define SO_TYPE 3 diff --git a/arch/x86_64/bits/fcntl.h b/arch/x86_64/bits/fcntl.h index e8db7ae6..9e07229e 100644 --- a/arch/x86_64/bits/fcntl.h +++ b/arch/x86_64/bits/fcntl.h @@ -10,15 +10,12 @@ #define O_DIRECTORY 0200000 #define O_NOFOLLOW 0400000 #define O_CLOEXEC 02000000 -#define O_SEARCH 010000000 -#define O_EXEC 010000000 #define O_ASYNC 020000 #define O_DIRECT 040000 #define O_LARGEFILE 0 #define O_NOATIME 01000000 #define O_NDELAY O_NONBLOCK -#define O_PATH 010000000 #define F_DUPFD 0 #define F_GETFD 1 diff --git a/include/fcntl.h b/include/fcntl.h index 9250e70e..70d4cbb5 100644 --- a/include/fcntl.h +++ b/include/fcntl.h @@ -37,6 +37,10 @@ int openat(int, const char *, int, ...); int posix_fadvise(int, off_t, off_t, int); int posix_fallocate(int, off_t, off_t); +#define O_SEARCH 010000000 +#define O_EXEC 010000000 +#define O_PATH 010000000 + #define O_ACCMODE (03|O_SEARCH) #define O_RDONLY 00 #define O_WRONLY 01 diff --git a/include/pthread.h b/include/pthread.h index 660a64d9..6eee14cb 100644 --- a/include/pthread.h +++ b/include/pthread.h @@ -105,6 +105,9 @@ int pthread_mutex_timedlock(pthread_mutex_t *__restrict, const struct timespec * int pthread_mutex_destroy(pthread_mutex_t *); int pthread_mutex_consistent(pthread_mutex_t *); +int pthread_mutex_getprioceiling(const pthread_mutex_t *__restrict, int *__restrict); +int pthread_mutex_setprioceiling(pthread_mutex_t *__restrict, int, int *__restrict); + int pthread_cond_init(pthread_cond_t *__restrict, const pthread_condattr_t *__restrict); int pthread_cond_destroy(pthread_cond_t *); int pthread_cond_wait(pthread_cond_t *__restrict, pthread_mutex_t *__restrict); @@ -192,6 +195,8 @@ int pthread_atfork(void (*)(void), void (*)(void), void (*)(void)); int pthread_getconcurrency(void); int pthread_setconcurrency(int); +int pthread_getcpuclockid(pthread_t, clockid_t *); + struct __ptcb { void (*__f)(void *); void *__x; diff --git a/include/sys/mtio.h b/include/sys/mtio.h new file mode 100644 index 00000000..dc8e5f52 --- /dev/null +++ b/include/sys/mtio.h @@ -0,0 +1,188 @@ +#ifndef _SYS_MTIO_H +#define _SYS_MTIO_H + +#include <sys/types.h> +#include <sys/ioctl.h> + +struct mtop { + short mt_op; + int mt_count; +}; + +#define _IOT_mtop _IOT (_IOTS (short), 1, _IOTS (int), 1, 0, 0) +#define _IOT_mtget _IOT (_IOTS (long), 7, 0, 0, 0, 0) +#define _IOT_mtpos _IOT_SIMPLE (long) +#define _IOT_mtconfiginfo _IOT (_IOTS (long), 2, _IOTS (short), 3, _IOTS (long), 1) + + +#define MTRESET 0 +#define MTFSF 1 +#define MTBSF 2 +#define MTFSR 3 +#define MTBSR 4 +#define MTWEOF 5 +#define MTREW 6 +#define MTOFFL 7 +#define MTNOP 8 +#define MTRETEN 9 +#define MTBSFM 10 +#define MTFSFM 11 +#define MTEOM 12 +#define MTERASE 13 +#define MTRAS1 14 +#define MTRAS2 15 +#define MTRAS3 16 +#define MTSETBLK 20 +#define MTSETDENSITY 21 +#define MTSEEK 22 +#define MTTELL 23 +#define MTSETDRVBUFFER 24 +#define MTFSS 25 +#define MTBSS 26 +#define MTWSM 27 +#define MTLOCK 28 +#define MTUNLOCK 29 +#define MTLOAD 30 +#define MTUNLOAD 31 +#define MTCOMPRESSION 32 +#define MTSETPART 33 +#define MTMKPART 34 + +struct mtget { + long mt_type; + long mt_resid; + long mt_dsreg; + long mt_gstat; + long mt_erreg; + int mt_fileno; + int mt_blkno; +}; + +#define MT_ISUNKNOWN 0x01 +#define MT_ISQIC02 0x02 +#define MT_ISWT5150 0x03 +#define MT_ISARCHIVE_5945L2 0x04 +#define MT_ISCMSJ500 0x05 +#define MT_ISTDC3610 0x06 +#define MT_ISARCHIVE_VP60I 0x07 +#define MT_ISARCHIVE_2150L 0x08 +#define MT_ISARCHIVE_2060L 0x09 +#define MT_ISARCHIVESC499 0x0A +#define MT_ISQIC02_ALL_FEATURES 0x0F +#define MT_ISWT5099EEN24 0x11 +#define MT_ISTEAC_MT2ST 0x12 +#define MT_ISEVEREX_FT40A 0x32 +#define MT_ISDDS1 0x51 +#define MT_ISDDS2 0x52 +#define MT_ISSCSI1 0x71 +#define MT_ISSCSI2 0x72 +#define MT_ISFTAPE_UNKNOWN 0x800000 +#define MT_ISFTAPE_FLAG 0x800000 + +struct mt_tape_info { + long t_type; + char *t_name; +}; + +#define MT_TAPE_INFO \ +{ \ + {MT_ISUNKNOWN, "Unknown type of tape device"}, \ + {MT_ISQIC02, "Generic QIC-02 tape streamer"}, \ + {MT_ISWT5150, "Wangtek 5150, QIC-150"}, \ + {MT_ISARCHIVE_5945L2, "Archive 5945L-2"}, \ + {MT_ISCMSJ500, "CMS Jumbo 500"}, \ + {MT_ISTDC3610, "Tandberg TDC 3610, QIC-24"}, \ + {MT_ISARCHIVE_VP60I, "Archive VP60i, QIC-02"}, \ + {MT_ISARCHIVE_2150L, "Archive Viper 2150L"}, \ + {MT_ISARCHIVE_2060L, "Archive Viper 2060L"}, \ + {MT_ISARCHIVESC499, "Archive SC-499 QIC-36 controller"}, \ + {MT_ISQIC02_ALL_FEATURES, "Generic QIC-02 tape, all features"}, \ + {MT_ISWT5099EEN24, "Wangtek 5099-een24, 60MB"}, \ + {MT_ISTEAC_MT2ST, "Teac MT-2ST 155mb data cassette drive"}, \ + {MT_ISEVEREX_FT40A, "Everex FT40A, QIC-40"}, \ + {MT_ISSCSI1, "Generic SCSI-1 tape"}, \ + {MT_ISSCSI2, "Generic SCSI-2 tape"}, \ + {0, NULL} \ +} + +struct mtpos { + long mt_blkno; +}; + +struct mtconfiginfo { + long mt_type; + long ifc_type; + unsigned short irqnr; + unsigned short dmanr; + unsigned short port; + unsigned long debug; + unsigned have_dens:1; + unsigned have_bsf:1; + unsigned have_fsr:1; + unsigned have_bsr:1; + unsigned have_eod:1; + unsigned have_seek:1; + unsigned have_tell:1; + unsigned have_ras1:1; + unsigned have_ras2:1; + unsigned have_ras3:1; + unsigned have_qfa:1; + unsigned pad1:5; + char reserved[10]; +}; + +#define MTIOCTOP _IOW('m', 1, struct mtop) +#define MTIOCGET _IOR('m', 2, struct mtget) +#define MTIOCPOS _IOR('m', 3, struct mtpos) + +#define MTIOCGETCONFIG _IOR('m', 4, struct mtconfiginfo) +#define MTIOCSETCONFIG _IOW('m', 5, struct mtconfiginfo) + +#define GMT_EOF(x) ((x) & 0x80000000) +#define GMT_BOT(x) ((x) & 0x40000000) +#define GMT_EOT(x) ((x) & 0x20000000) +#define GMT_SM(x) ((x) & 0x10000000) +#define GMT_EOD(x) ((x) & 0x08000000) +#define GMT_WR_PROT(x) ((x) & 0x04000000) +#define GMT_ONLINE(x) ((x) & 0x01000000) +#define GMT_D_6250(x) ((x) & 0x00800000) +#define GMT_D_1600(x) ((x) & 0x00400000) +#define GMT_D_800(x) ((x) & 0x00200000) +#define GMT_DR_OPEN(x) ((x) & 0x00040000) +#define GMT_IM_REP_EN(x) ((x) & 0x00010000) + +#define MT_ST_BLKSIZE_SHIFT 0 +#define MT_ST_BLKSIZE_MASK 0xffffff +#define MT_ST_DENSITY_SHIFT 24 +#define MT_ST_DENSITY_MASK 0xff000000 +#define MT_ST_SOFTERR_SHIFT 0 +#define MT_ST_SOFTERR_MASK 0xffff +#define MT_ST_OPTIONS 0xf0000000 +#define MT_ST_BOOLEANS 0x10000000 +#define MT_ST_SETBOOLEANS 0x30000000 +#define MT_ST_CLEARBOOLEANS 0x40000000 +#define MT_ST_WRITE_THRESHOLD 0x20000000 +#define MT_ST_DEF_BLKSIZE 0x50000000 +#define MT_ST_DEF_OPTIONS 0x60000000 +#define MT_ST_BUFFER_WRITES 0x1 +#define MT_ST_ASYNC_WRITES 0x2 +#define MT_ST_READ_AHEAD 0x4 +#define MT_ST_DEBUGGING 0x8 +#define MT_ST_TWO_FM 0x10 +#define MT_ST_FAST_MTEOM 0x20 +#define MT_ST_AUTO_LOCK 0x40 +#define MT_ST_DEF_WRITES 0x80 +#define MT_ST_CAN_BSR 0x100 +#define MT_ST_NO_BLKLIMS 0x200 +#define MT_ST_CAN_PARTITIONS 0x400 +#define MT_ST_SCSI2LOGICAL 0x800 +#define MT_ST_CLEAR_DEFAULT 0xfffff +#define MT_ST_DEF_DENSITY (MT_ST_DEF_OPTIONS | 0x100000) +#define MT_ST_DEF_COMPRESSION (MT_ST_DEF_OPTIONS | 0x200000) +#define MT_ST_DEF_DRVBUFFER (MT_ST_DEF_OPTIONS | 0x300000) +#define MT_ST_HPLOADER_OFFSET 10000 +#ifndef DEFTAPE +# define DEFTAPE "/dev/tape" +#endif + +#endif diff --git a/src/ldso/dynlink.c b/src/ldso/dynlink.c index ba2f6129..66f22bef 100644 --- a/src/ldso/dynlink.c +++ b/src/ldso/dynlink.c @@ -481,7 +481,7 @@ static struct dso *load_library(const char *name) if (getline(&sys_path, (size_t[1]){0}, f) > 0) { size_t l = strlen(sys_path); if (l && sys_path[l-1]=='\n') - sys_path[-1] = 0; + sys_path[l-1] = 0; } fclose(f); } diff --git a/src/ldso/powerpc/start.s b/src/ldso/powerpc/start.s index 08b5979a..6c499e8e 100644 --- a/src/ldso/powerpc/start.s +++ b/src/ldso/powerpc/start.s @@ -16,6 +16,14 @@ _start: bl __dynlink addi 1, 1, 16 + lwz 4, 0(1) +1: addi 4, 4, -1 + lwzu 5, 4(1) + cmpwi 5, -1 + beq- 1b + addi 4, 4, 1 + stwu 4, -4(1) + mtlr 3 li 3, 0 blr diff --git a/src/thread/pthread_attr_get.c b/src/thread/pthread_attr_get.c index f81103d8..e4650e42 100644 --- a/src/thread/pthread_attr_get.c +++ b/src/thread/pthread_attr_get.c @@ -68,6 +68,11 @@ int pthread_condattr_getpshared(const pthread_condattr_t *restrict a, int *restr return 0; } +int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *restrict a, int *restrict protocol) +{ + *protocol = PTHREAD_PRIO_NONE; + return 0; +} int pthread_mutexattr_getpshared(const pthread_mutexattr_t *restrict a, int *restrict pshared) { *pshared = *a>>31; diff --git a/src/thread/pthread_getcpuclockid.c b/src/thread/pthread_getcpuclockid.c new file mode 100644 index 00000000..cf3d2b84 --- /dev/null +++ b/src/thread/pthread_getcpuclockid.c @@ -0,0 +1,6 @@ +#include "pthread_impl.h" + +int pthread_getcpuclockid(pthread_t t, clockid_t *clockid) +{ + return ENOSYS; +} diff --git a/src/thread/pthread_mutex_getprioceiling.c b/src/thread/pthread_mutex_getprioceiling.c new file mode 100644 index 00000000..8c75a661 --- /dev/null +++ b/src/thread/pthread_mutex_getprioceiling.c @@ -0,0 +1,6 @@ +#include "pthread_impl.h" + +int pthread_mutex_getprioceiling(const pthread_mutex_t *restrict m, int *restrict ceiling) +{ + return EINVAL; +} diff --git a/src/thread/pthread_mutex_setprioceiling.c b/src/thread/pthread_mutex_setprioceiling.c new file mode 100644 index 00000000..681f07c8 --- /dev/null +++ b/src/thread/pthread_mutex_setprioceiling.c @@ -0,0 +1,6 @@ +#include "pthread_impl.h" + +int pthread_mutex_setprioceiling(pthread_mutex_t *restrict m, int ceiling, int *restrict old) +{ + return EINVAL; +} diff --git a/src/thread/pthread_mutexattr_setprotocol.c b/src/thread/pthread_mutexattr_setprotocol.c new file mode 100644 index 00000000..c92a31c8 --- /dev/null +++ b/src/thread/pthread_mutexattr_setprotocol.c @@ -0,0 +1,7 @@ +#include "pthread_impl.h" + +int pthread_mutexattr_setprotocol(pthread_mutexattr_t *a, int protocol) +{ + if (protocol) return ENOTSUP; + return 0; +} |