1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 /* 22 * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 26 #ifndef _SYS_LX_TYPES_H 27 #define _SYS_LX_TYPES_H 28 29 #pragma ident "%Z%%M% %I% %E% SMI" 30 31 #ifdef __cplusplus 32 extern "C" { 33 #endif 34 35 #define SHRT_MIN (-32768) /* min value of a "short int" */ 36 #define SHRT_MAX 32767 /* max value of a "short int" */ 37 #define USHRT_MAX 65535 /* max of "unsigned short int" */ 38 #define INT_MIN (-2147483647-1) /* min value of an "int" */ 39 #define INT_MAX 2147483647 /* max value of an "int" */ 40 #define UINT_MAX 4294967295U /* max value of an "unsigned int" */ 41 #define LONG_MIN (-2147483647L-1L) 42 /* min value of a "long int" */ 43 #define LONG_MAX 2147483647L /* max value of a "long int" */ 44 #define ULONG_MAX 4294967295UL /* max of "unsigned long int" */ 45 46 #define LX_SYS_UTS_LN 65 47 48 struct lx_utsname { 49 char sysname[LX_SYS_UTS_LN]; 50 char nodename[LX_SYS_UTS_LN]; 51 char release[LX_SYS_UTS_LN]; 52 char version[LX_SYS_UTS_LN]; 53 char machine[LX_SYS_UTS_LN]; 54 char domainname[LX_SYS_UTS_LN]; 55 }; 56 57 typedef uint64_t lx_dev_t; 58 typedef uint16_t lx_dev16_t; 59 typedef uint32_t lx_ino_t; 60 typedef uint64_t lx_ino64_t; 61 typedef uint32_t lx_uid_t; 62 typedef uint16_t lx_uid16_t; 63 typedef uint32_t lx_gid_t; 64 typedef uint16_t lx_gid16_t; 65 typedef uint32_t lx_off_t; 66 typedef uint64_t lx_off64_t; 67 typedef uint32_t lx_blksize_t; 68 typedef uint32_t lx_blkcnt_t; 69 typedef uint64_t lx_blkcnt64_t; 70 typedef ulong_t lx_mode_t; 71 typedef uint16_t lx_mode16_t; 72 73 #define LX_UID16_TO_UID32(uid16) \ 74 (((uid16) == (lx_uid16_t)-1) ? ((lx_uid_t)-1) : (lx_uid_t)(uid16)) 75 76 #define LX_GID16_TO_GID32(gid16) \ 77 (((gid16) == (lx_gid16_t)-1) ? ((lx_gid_t)-1) : (lx_gid_t)(gid16)) 78 79 /* Overflow values default to NFS nobody. */ 80 81 #define UID16_OVERFLOW ((lx_uid16_t)65534) 82 #define GID16_OVERFLOW ((lx_gid16_t)65534) 83 84 /* 85 * All IDs with high word non-zero are converted to default overflow values to 86 * avoid inadvertent truncation to zero (root) (!). 87 */ 88 #define LX_UID32_TO_UID16(uid32) \ 89 ((((uid32) & 0xffff0000) == 0) ? ((lx_uid16_t)(uid32)) : \ 90 (((uid32) == ((lx_uid_t)-1)) ? ((lx_uid16_t)-1) : UID16_OVERFLOW)) 91 92 #define LX_GID32_TO_GID16(gid32) \ 93 ((((gid32) & 0xffff0000) == 0) ? ((lx_gid16_t)(gid32)) : \ 94 (((gid32) == ((lx_gid_t)-1)) ? ((lx_gid16_t)-1) : GID16_OVERFLOW)) 95 96 struct lx_timespec { 97 time_t ts_sec; 98 long ts_nsec; 99 }; 100 101 #define LX_32TO64(lo, hi) \ 102 ((uint64_t)((uint64_t)(lo) | ((uint64_t)(hi) << 32))) 103 104 #ifdef __cplusplus 105 } 106 #endif 107 108 #endif /* _SYS_LX_TYPES_H */