Mercurial > ecos
diff packages/hal/synth/arch/current/include/hal_io.h @ 202:353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
| author | jlarmour |
|---|---|
| date | Fri, 11 Jan 2002 16:53:46 +0000 |
| parents | 920b9b754b53 |
| children | e0c0827131d1 |
line wrap: on
line diff
--- a/packages/hal/synth/arch/current/include/hal_io.h +++ b/packages/hal/synth/arch/current/include/hal_io.h @@ -35,7 +35,7 @@ //#####DESCRIPTIONBEGIN#### // // Author(s): nickg -// Contributors:nickg, bartv +// Contributors:nickg, bartv, alunn, jlarmour // Date: 1998-02-17 // Purpose: Define IO register support // Description: The macros defined here provide the HAL APIs for handling @@ -307,10 +307,71 @@ struct cyg_hal_sys_itimerval { struct cyg_hal_sys_timeval hal_it_interval; struct cyg_hal_sys_timeval hal_it_value; }; + +/* lseek whence flags */ +#define CYG_HAL_SYS_SEEK_SET 0 /* Seek from beginning of file. */ +#define CYG_HAL_SYS_SEEK_CUR 1 /* Seek from current position. */ +#define CYG_HAL_SYS_SEEK_END 2 /* Seek from end of file. */ + +/* open/fcntl flags */ + +#define CYG_HAL_SYS_O_RDONLY 0 +#define CYG_HAL_SYS_O_WRONLY 1 +#define CYG_HAL_SYS_O_RDWR 2 +#define CYG_HAL_SYS_O_CREAT 100 +#define CYG_HAL_SYS_O_EXCL 200 +#define CYG_HAL_SYS_O_NOCTTY 400 +#define CYG_HAL_SYS_O_TRUNC 1000 +#define CYG_HAL_SYS_O_APPEND 2000 +#define CYG_HAL_SYS_O_NONBLOCK 4000 +#define CYG_HAL_SYS_O_NDELAY CYG_HAL_SYS_O_NONBLOCK +#define CYG_HAL_SYS_O_SYNC 10000 +#define CYG_HAL_SYS_O_FSYNC CYG_HAL_SYS_O_SYNC +#define CYG_HAL_SYS_O_ASYNC 20000 + +/* open mode flags */ +#define CYG_HAL_SYS_S_IRUSR 400 +#define CYG_HAL_SYS_S_IREAD CYG_HAL_SYS_S_IRUSR +#define CYG_HAL_SYS_S_IWUSR 200 +#define CYG_HAL_SYS_S_IWRITE CYG_HAL_SYS_S_IWUSR +#define CYG_HAL_SYS_S_IXUSR 100 +#define CYG_HAL_SYS_S_IEXEC CYG_HAL_SYS_S_IXUSR +#define CYG_HAL_SYS_S_IRWXU \ + (CYG_HAL_SYS_S_IREAD|CYG_HAL_SYS_S_IWRITE|CYG_HAL_SYS_S_IEXEC) +#define CYG_HAL_SYS_S_IRWXG (CYG_HAL_SYS_S_IRWXU>>3) +#define CYG_HAL_SYS_S_IRGRP (CYG_HAL_SYS_S_IRUSR>>3) +#define CYG_HAL_SYS_S_IWGRP (CYG_HAL_SYS_S_IWUSR>>3) +#define CYG_HAL_SYS_S_IXGRP (CYG_HAL_SYS_S_IXUSR>>3) +#define CYG_HAL_SYS_S_IRWXO (CYG_HAL_SYS_S_IRWXG>>3) +#define CYG_HAL_SYS_S_IROTH (CYG_HAL_SYS_S_IRGRP>>3) +#define CYG_HAL_SYS_S_IWOTH (CYG_HAL_SYS_S_IWGRP>>3) +#define CYG_HAL_SYS_S_IXOTH (CYG_HAL_SYS_S_IXGRP>>3) + +struct cyg_hal_sys_mmap_args { + unsigned long addr; + unsigned long len; + unsigned long prot; + unsigned long flags; + unsigned long fd; + unsigned long offset; +}; + +/* Protection flags for mmap */ +#define CYG_HAL_SYS_PROT_READ 0x1 /* page can be read */ +#define CYG_HAL_SYS_PROT_WRITE 0x2 /* page can be written */ +#define CYG_HAL_SYS_PROT_EXEC 0x4 /* page can be executed */ +#define CYG_HAL_SYS_PROT_NONE 0x0 /* page can not be accessed */ + +/* Sharing types and other flags */ +#define CYG_HAL_SYS_MAP_SHARED 0x01 /* Share changes. */ +#define CYG_HAL_SYS_MAP_PRIVATE 0x02 /* Changes are private. */ +#define CYG_HAL_SYS_MAP_FIXED 0x10 /* Interpret addr exactly. */ // System calls, or rather the subset that is needed internally. externC unsigned long cyg_hal_sys_write(int, const void*, long); externC unsigned long cyg_hal_sys_read(int, void*, long); +externC int cyg_hal_sys_lseek(int, int, int); +externC int cyg_hal_sys_open(const char *,int,int); externC int cyg_hal_sys_fdatasync(int); externC int cyg_hal_sys_sigaction(int, const struct cyg_hal_sys_sigaction*, @@ -335,7 +396,10 @@ externC void* cyg_hal_sys_brk( // Returns the number of characters placed in the buffer or <0 for error, // not a char*. externC int cyg_hal_sys_getcwd(char*, int); - + +// mmap on the "host" system - this may be unportable. +externC int cyg_hal_sys_mmap(struct cyg_hal_sys_mmap_args *); + // ---------------------------------------------------------------------------- // Interaction between the application and the auxiliary. // Not yet available, but there is a hardware-initialization routine.
