#ifndef CYGONCE_ISO_SYS_TYPES_H #define CYGONCE_ISO_SYS_TYPES_H /*======================================================================== // // sys/types.h // // POSIX types // //======================================================================== // ####ECOSGPLCOPYRIGHTBEGIN#### // ------------------------------------------- // This file is part of eCos, the Embedded Configurable Operating System. // Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. // // eCos is free software; you can redistribute it and/or modify it under // the terms of the GNU General Public License as published by the Free // Software Foundation; either version 2 or (at your option) any later // version. // // eCos is distributed in the hope that it will be useful, but WITHOUT // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License // for more details. // // You should have received a copy of the GNU General Public License // along with eCos; if not, write to the Free Software Foundation, Inc., // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // // As a special exception, if other files instantiate templates or use // macros or inline functions from this file, or you compile this file // and link it with other works to produce a work based on this file, // this file does not by itself cause the resulting work to be covered by // the GNU General Public License. However the source code for this file // must still be made available in accordance with section (3) of the GNU // General Public License v2. // // This exception does not invalidate any other reasons why a work based // on this file might be covered by the GNU General Public License. // ------------------------------------------- // ####ECOSGPLCOPYRIGHTEND#### //======================================================================== //#####DESCRIPTIONBEGIN#### // // Author(s): jlarmour // Contributors: // Date: 2000-04-14 // Purpose: This file provides various types required by POSIX 1003.1. // Description: The real contents of this file get set from the // configuration (set by the implementation) // Usage: #include // //####DESCRIPTIONEND#### // //====================================================================== */ /* CONFIGURATION */ //#include //#include /* Configuration header */ /* INCLUDES */ /* This is the "standard" way to get size_t from stddef.h, * which is the canonical location of the definition. */ //#define __need_size_t //#include #include "codes.h" typedef long ssize_t; /* #ifndef dev_t typedef short dev_t; #endif #ifndef ino_t typedef unsigned int ino_t; #endif #ifndef mode_t typedef unsigned int mode_t; #endif */ typedef unsigned short nlink_t; typedef long off_t; typedef unsigned short gid_t; typedef unsigned short uid_t; typedef int pid_t; // typedef void *cyg_io_handle_t; /* Variable names for pathconf() */ #define _PC_ASYNC_IO 1 #define _PC_CHOWN_RESTRICTED 2 #define _PC_LINK_MAX 3 #define _PC_MAX_CANON 4 #define _PC_MAX_INPUT 5 #define _PC_NAME_MAX 6 #define _PC_NO_TRUNC 7 #define _PC_PATH_MAX 8 #define _PC_PIPE_BUF 9 #define _PC_PRIO_IO 10 #define _PC_SYNC_IO 11 #define _PC_VDISABLE 12 //limit.h /* DEFINES */ /*----------------------------------------------------------------------------- * Minimum values from POSIX.1 tables 2-3, 2-7 and 2-7a. * These are the standard-mandated minimum values. * These values do not vary with the implementation - they may * simply be defined */ /* Minimum number of operations in one list I/O call. */ #define _POSIX_AIO_LISTIO_MAX 2 /* Minimal number of outstanding asynchronous I/O operations. */ #define _POSIX_AIO_MAX 1 /* Maximum length of arguments to `execve', including environment. */ #define _POSIX_ARG_MAX 4096 /* Maximum simultaneous processes per real user ID. */ #define _POSIX_CHILD_MAX 6 /* Minimal number of timer expiration overruns. */ #define _POSIX_DELAYTIMER_MAX 32 /* Maximum link count of a file. */ #define _POSIX_LINK_MAX 8 /* Size of storage required for a login name */ #define _POSIX_LOGIN_NAME_MAX 9 /* Number of bytes in a terminal canonical input queue. */ #define _POSIX_MAX_CANON 255 /* Number of bytes for which space will be available in a terminal input queue. */ #define _POSIX_MAX_INPUT 255 /* Maximum number of message queues open for a process. */ #define _POSIX_MQ_OPEN_MAX 8 /* Maximum number of supported message priorities. */ #define _POSIX_MQ_PRIO_MAX 32 /* Number of bytes in a filename. */ #define _POSIX_NAME_MAX 14 /* Number of simultaneous supplementary group IDs per process. */ #define _POSIX_NGROUPS_MAX 0 /* Number of files one process can have open at once. */ #define _POSIX_OPEN_MAX 16 /* Number of bytes in a pathname. */ #define _POSIX_PATH_MAX 255 /* Number of bytes than can be written atomically to a pipe. */ #define _POSIX_PIPE_BUF 512 /* Minimal number of realtime signals reserved for the application. */ #define _POSIX_RTSIG_MAX 8 /* Number of semaphores a process can have. */ #define _POSIX_SEM_NSEMS_MAX 256 /* Maximal value of a semaphore. */ #define _POSIX_SEM_VALUE_MAX 32767 /* Number of pending realtime signals. */ #define _POSIX_SIGQUEUE_MAX 32 /* Largest value of a `ssize_t'. */ #define _POSIX_SSIZE_MAX 32767 /* Number of streams a process can have open at once. */ #define _POSIX_STREAM_MAX 8 /* Controlling the iterations of destructors for thread-specific data. */ #define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4 /* The number of data keys per process. */ #define _POSIX_THREAD_KEYS_MAX 128 /* The number of threads per process. */ #define _POSIX_THREAD_THREADS_MAX 64 /* Maximum number of characters in a tty name. */ #define _POSIX_TTY_NAME_MAX 9 /* Number of timer for a process. */ #define _POSIX_TIMER_MAX 32 /* Maximum length of a timezone name (element of `tzname'). */ #define _POSIX_TZNAME_MAX 3 /* Maximum clock resolution in nanoseconds. */ #define _POSIX_CLOCKRES_MIN 20000000 #ifdef CYGBLD_ISO_SSIZET_HEADER # include CYGBLD_ISO_SSIZET_HEADER #else # ifndef __STRICT_ANSI__ # define SSIZE_MAX LONG_MAX # endif #endif /* INCLUDES */ #ifdef CYGBLD_ISO_OPEN_MAX_HEADER # include CYGBLD_ISO_OPEN_MAX_HEADER #else # ifndef __STRICT_ANSI__ # define OPEN_MAX _POSIX_OPEN_MAX # endif #endif #ifdef CYGBLD_ISO_LINK_MAX_HEADER # include CYGBLD_ISO_LINK_MAX_HEADER #else # ifndef __STRICT_ANSI__ # define LINK_MAX _POSIX_LINK_MAX # endif #endif #ifdef CYGBLD_ISO_NAME_MAX_HEADER # include CYGBLD_ISO_NAME_MAX_HEADER #else # ifndef __STRICT_ANSI__ # define NAME_MAX _POSIX_NAME_MAX # endif #endif #ifdef CYGBLD_ISO_PATH_MAX_HEADER # include CYGBLD_ISO_PATH_MAX_HEADER #else # ifndef __STRICT_ANSI__ # define PATH_MAX _POSIX_PATH_MAX # endif #endif #if CYGINT_ISO_POSIX_LIMITS # ifdef CYGBLD_ISO_POSIX_LIMITS_HEADER # include CYGBLD_ISO_POSIX_LIMITS_HEADER # endif #endif #define CYGNUM_FILEIO_MTAB_MAX 16 //----------------------------------------------- // stat.h need by fs-ecos.h //----------------------------------------------- #define __stat_mode_DIR (1<<0) #define __stat_mode_CHR (1<<1) #define __stat_mode_BLK (1<<2) #define __stat_mode_REG (1<<3) #define __stat_mode_FIFO (1<<4) #define __stat_mode_MQ (1<<5) #define __stat_mode_SEM (1<<6) #define __stat_mode_SHM (1<<7) #define __stat_mode_LNK (1<<8) #define __stat_mode_SOCK (1<<9) #if !defined(_POSIX_C_SOURCE) || (_POSIX_C_SOURCE >= 200112L) #define S_IFDIR (__stat_mode_DIR) #define S_IFCHR (__stat_mode_CHR) #define S_IFBLK (__stat_mode_BLK) #define S_IFREG (__stat_mode_REG) #define S_IFIFO (__stat_mode_FIFO) #define S_IFLNK (__stat_mode_LNK) #define S_IFSOCK (__stat_mode_SOCK) #define S_IFMT (S_IFDIR|S_IFCHR|S_IFBLK|S_IFREG| \ S_IFIFO|S_IFLNK|S_IFSOCK) #endif #define S_ISDIR(__mode) ((__mode) & __stat_mode_DIR ) #define S_ISCHR(__mode) ((__mode) & __stat_mode_CHR ) #define S_ISBLK(__mode) ((__mode) & __stat_mode_BLK ) #define S_ISREG(__mode) ((__mode) & __stat_mode_REG ) #define S_ISFIFO(__mode) ((__mode) & __stat_mode_FIFO ) #if !defined(_POSIX_C_SOURCE) || (_POSIX_C_SOURCE >= 200112L) #define S_ISLNK(__mode) ((__mode) & __stat_mode_LNK ) #define S_ISSOCK(__mode) ((__mode) & __stat_mode_SOCK ) #endif #define S_TYPEISMQ(__buf) ((__buf)->st_mode & __stat_mode_MQ ) #define S_TYPEISSEM(__buf) ((__buf)->st_mode & __stat_mode_SEM ) #define S_TYPEISSHM(__buf) ((__buf)->st_mode & __stat_mode_SHM ) #define S_IRUSR (1<<16) #define S_IWUSR (1<<17) #define S_IXUSR (1<<18) #define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR) #define S_IRGRP (1<<19) #define S_IWGRP (1<<20) #define S_IXGRP (1<<21) #define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP) #define S_IROTH (1<<22) #define S_IWOTH (1<<23) #define S_IXOTH (1<<24) #define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH) #define S_ISUID (1<<25) #define S_ISGID (1<<26) #if defined(MSVC) typedef unsigned long mode_t; typedef unsigned int ino_t; typedef unsigned int dev_t; typedef int time_t; #elif defined(__CC_ARM) #define mode_t unsigned long typedef unsigned int ino_t; typedef unsigned int dev_t; typedef long time_t; #endif struct stat { mode_t st_mode; /* File mode */ ino_t st_ino; /* File serial number */ dev_t st_dev; /* ID of device containing file */ nlink_t st_nlink; /* Number of hard links */ uid_t st_uid; /* User ID of the file owner */ gid_t st_gid; /* Group ID of the file's group */ off_t st_size; /* File size (regular files only) */ time_t st_atime; /* Last access time */ time_t st_mtime; /* Last data modification time */ time_t st_ctime; /* Last file status change time */ }; //fcntl.h #define O_NONBLOCK (1<<9) /* No delay */ #endif /* CYGONCE_ISO_SYS_TYPES_H multiple inclusion protection */ /* EOF sys/types.h */