1/* MN10300 POSIX types 2 * 3 * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd. 4 * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public Licence 8 * as published by the Free Software Foundation; either version 9 * 2 of the Licence, or (at your option) any later version. 10 */ 11#ifndef _ASM_POSIX_TYPES_H 12#define _ASM_POSIX_TYPES_H 13 14/* 15 * This file is generally used by user-level software, so you need to 16 * be a little careful about namespace pollution etc. Also, we cannot 17 * assume GCC is being used. 18 */ 19 20typedef unsigned long __kernel_ino_t; 21typedef unsigned short __kernel_mode_t; 22typedef unsigned short __kernel_nlink_t; 23typedef long __kernel_off_t; 24typedef int __kernel_pid_t; 25typedef unsigned short __kernel_ipc_pid_t; 26typedef unsigned short __kernel_uid_t; 27typedef unsigned short __kernel_gid_t; 28#if __GNUC__ == 4 29typedef unsigned int __kernel_size_t; 30typedef signed int __kernel_ssize_t; 31#else 32typedef unsigned long __kernel_size_t; 33typedef signed long __kernel_ssize_t; 34#endif 35typedef int __kernel_ptrdiff_t; 36typedef long __kernel_time_t; 37typedef long __kernel_suseconds_t; 38typedef long __kernel_clock_t; 39typedef int __kernel_timer_t; 40typedef int __kernel_clockid_t; 41typedef int __kernel_daddr_t; 42typedef char * __kernel_caddr_t; 43typedef unsigned short __kernel_uid16_t; 44typedef unsigned short __kernel_gid16_t; 45typedef unsigned int __kernel_uid32_t; 46typedef unsigned int __kernel_gid32_t; 47 48typedef unsigned short __kernel_old_uid_t; 49typedef unsigned short __kernel_old_gid_t; 50typedef unsigned short __kernel_old_dev_t; 51 52#ifdef __GNUC__ 53typedef long long __kernel_loff_t; 54#endif 55 56typedef struct { 57#if defined(__KERNEL__) || defined(__USE_ALL) 58 int val[2]; 59#else /* !defined(__KERNEL__) && !defined(__USE_ALL) */ 60 int __val[2]; 61#endif /* !defined(__KERNEL__) && !defined(__USE_ALL) */ 62} __kernel_fsid_t; 63 64#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) 65 66#undef __FD_SET 67static inline void __FD_SET(unsigned long __fd, __kernel_fd_set *__fdsetp) 68{ 69 unsigned long __tmp = __fd / __NFDBITS; 70 unsigned long __rem = __fd % __NFDBITS; 71 __fdsetp->fds_bits[__tmp] |= (1UL<<__rem); 72} 73 74#undef __FD_CLR 75static inline void __FD_CLR(unsigned long __fd, __kernel_fd_set *__fdsetp) 76{ 77 unsigned long __tmp = __fd / __NFDBITS; 78 unsigned long __rem = __fd % __NFDBITS; 79 __fdsetp->fds_bits[__tmp] &= ~(1UL<<__rem); 80} 81 82 83#undef __FD_ISSET 84static inline int __FD_ISSET(unsigned long __fd, const __kernel_fd_set *__p) 85{ 86 unsigned long __tmp = __fd / __NFDBITS; 87 unsigned long __rem = __fd % __NFDBITS; 88 return (__p->fds_bits[__tmp] & (1UL<<__rem)) != 0; 89} 90 91/* 92 * This will unroll the loop for the normal constant case (8 ints, 93 * for a 256-bit fd_set) 94 */ 95#undef __FD_ZERO 96static inline void __FD_ZERO(__kernel_fd_set *__p) 97{ 98 unsigned long *__tmp = __p->fds_bits; 99 int __i; 100 101 if (__builtin_constant_p(__FDSET_LONGS)) { 102 switch (__FDSET_LONGS) { 103 case 16: 104 __tmp[ 0] = 0; __tmp[ 1] = 0; 105 __tmp[ 2] = 0; __tmp[ 3] = 0; 106 __tmp[ 4] = 0; __tmp[ 5] = 0; 107 __tmp[ 6] = 0; __tmp[ 7] = 0; 108 __tmp[ 8] = 0; __tmp[ 9] = 0; 109 __tmp[10] = 0; __tmp[11] = 0; 110 __tmp[12] = 0; __tmp[13] = 0; 111 __tmp[14] = 0; __tmp[15] = 0; 112 return; 113 114 case 8: 115 __tmp[ 0] = 0; __tmp[ 1] = 0; 116 __tmp[ 2] = 0; __tmp[ 3] = 0; 117 __tmp[ 4] = 0; __tmp[ 5] = 0; 118 __tmp[ 6] = 0; __tmp[ 7] = 0; 119 return; 120 121 case 4: 122 __tmp[ 0] = 0; __tmp[ 1] = 0; 123 __tmp[ 2] = 0; __tmp[ 3] = 0; 124 return; 125 } 126 } 127 __i = __FDSET_LONGS; 128 while (__i) { 129 __i--; 130 *__tmp = 0; 131 __tmp++; 132 } 133} 134 135#endif /* defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) */ 136 137#endif /* _ASM_POSIX_TYPES_H */ 138