📄 hal_io.h
字号:
#define CYG_HAL_SYS__SIGMASK(_d_) ((unsigned long)1 << ((_d_) % CYG_HAL_SYS__SIGBITS))typedef struct cyg_hal_sys_sigset_t { unsigned long hal_sig_bits[CYG_HAL_SYS__NSIG / CYG_HAL_SYS__SIGBITS];} cyg_hal_sys_sigset_t;#define CYG_HAL_SYS_SIGFILLSET(_set_) \ CYG_MACRO_START \ unsigned int __i; \ for (__i = 0; __i < (CYG_HAL_SYS__NSIG / CYG_HAL_SYS__SIGBITS); __i++) { \ (_set_)->hal_sig_bits[__i] = ~0; \ } \ CYG_MACRO_END#define CYG_HAL_SYS_SIGEMPTYSET(_set_) \ CYG_MACRO_START \ unsigned int __i; \ for (__i = 0; __i < (CYG_HAL_SYS__NSIG / CYG_HAL_SYS__SIGBITS); __i++) { \ (_set_)->hal_sig_bits[__i] = 0; \ } \ CYG_MACRO_END#define CYG_HAL_SYS_SIGADDSET(_set_, _bit_) \ CYG_MACRO_START \ (_set_)->hal_sig_bits[CYG_HAL_SYS__SIGELT(_bit_ - 1)] |= CYG_HAL_SYS__SIGMASK(_bit_ - 1); \ CYG_MACRO_END#define CYG_HAL_SYS_SIGDELSET(_set_, _bit_) \ CYG_MACRO_START \ (_set_)->hal_sig_bits[CYG_HAL_SYS__SIGELT(_bit_ - 1)] &= ~CYG_HAL_SYS__SIGMASK(_bit_ - 1); \ CYG_MACRO_END #define CYG_HAL_SYS_SIGISMEMBER(_set_, _bit_) \ (0 != ((_set_)->hal_sig_bits[CYG_HAL_SYS__SIGELT(_bit_ - 1)] & CYG_HAL_SYS__SIGMASK(_bit_ - 1)))struct cyg_hal_sys_sigaction { void (*hal_handler)(int); long hal_mask; int hal_flags; void (*hal_bogus)(int);};// Time support.struct cyg_hal_sys_timeval { long hal_tv_sec; long hal_tv_usec;};struct cyg_hal_sys_timezone { int hal_tz_minuteswest; int hal_tz_dsttime;};// Select support. Initially this is used only by the idle handler.#define CYG_HAL_SYS_FD_SETSIZE 1024#define CYG_HAL_SYS__NFDBITS (8 * sizeof(unsigned long))#define CYG_HAL_SYS__FDELT(_d_) ((_d_) / CYG_HAL_SYS__NFDBITS)#define CYG_HAL_SYS__FDMASK(_d_) ((unsigned long)1 << ((_d_) % CYG_HAL_SYS__NFDBITS))struct cyg_hal_sys_fd_set { unsigned long hal_fds_bits[CYG_HAL_SYS_FD_SETSIZE / CYG_HAL_SYS__NFDBITS];};#define CYG_HAL_SYS_FD_ZERO(_fdsp_) \ do { \ unsigned int __i; \ for (__i = 0; \ __i < (CYG_HAL_SYS_FD_SETSIZE / CYG_HAL_SYS__NFDBITS); \ __i++) { \ (_fdsp_)->hal_fds_bits[__i] = 0; \ } while (0); #define CYG_HAL_SYS_FD_SET(_fd_, _fdsp_) \ CYG_MACRO_START \ (_fdsp_)->hal_fds_bits[CYG_HAL_SYS__FDELT(_fd_)] |= CYG_HAL_SYS__FDMASK(_fd_); \ CYG_MACRO_END #define CYG_HAL_SYS_FD_CLR(_fd_, _fdsp_) \ CYG_MACRO_START \ (_fdsp_)->hal_fds_bits[CYG_HAL_SYS__FDELT(_fd_)] &= ~CYG_HAL_SYS__FDMASK(_fd_); \ CYG_MACRO_END#define CYG_HAL_SYS_FD_ISSET(_fd_, _fdsp_) \ (0 != ((_fdsp_)->hal_fds_bits[CYG_HAL_SYS__FDELT(_fd_)] & CYG_HAL_SYS__FDMASK(_fd_)))// Interval timer support, needed for the clock.#define CYG_HAL_SYS_ITIMER_REAL 0#define CYG_HAL_SYS_ITIMER_VIRTUAL 1#define CYG_HAL_SYS_ITIMER_PROF 2 struct cyg_hal_sys_itimerval { struct cyg_hal_sys_timeval hal_it_interval; struct cyg_hal_sys_timeval hal_it_value;};// System calls and related constants, or rather the subset that is// needed internally.#define CYG_HAL_SYS_R_OK 0x04#define CYG_HAL_SYS_W_OK 0x02#define CYG_HAL_SYS_X_OK 0x01#define CYG_HAL_SYS_F_OK 0x00/* 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*, struct cyg_hal_sys_sigaction*);externC int cyg_hal_sys_sigprocmask(int, const cyg_hal_sys_sigset_t*, cyg_hal_sys_sigset_t*);externC int cyg_hal_sys__newselect(int, struct cyg_hal_sys_fd_set*, struct cyg_hal_sys_fd_set*, struct cyg_hal_sys_fd_set*, struct cyg_hal_sys_timeval*);externC int cyg_hal_sys_setitimer(int, const struct cyg_hal_sys_itimerval*, struct cyg_hal_sys_itimerval*);externC int cyg_hal_sys_gettimeofday(struct cyg_hal_sys_timeval*, struct cyg_hal_sys_timezone*);externC int cyg_hal_sys_access(const char*, int);externC int cyg_hal_sys_fork(void);externC int cyg_hal_sys_execve(const char*, const char* [], const char* []);externC int cyg_hal_sys_pipe(int []);externC int cyg_hal_sys_close(int);externC int cyg_hal_sys_dup2(int, int); // The actual implementation appears to return the new brk() value.externC void* cyg_hal_sys_brk(void*);// 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 *);// Access to environmental dataextern int cyg_hal_sys_argc;extern const char** cyg_hal_sys_argv;extern const char** cyg_hal_sys_environ;// ----------------------------------------------------------------------------// Interaction between the application and the auxiliary.// Is the auxiliary actually in use/available? This flag should be tested by// device drivers prior to attempting any communication with the auxiliary.extern cyg_bool synth_auxiliary_running; // The fundamental I/O operation: sending a request to the auxiliary and// optionally getting back a reply. A null pointer for the response field// indicates that no reply is expected. externC void synth_auxiliary_xchgmsg(int /* devid */, int /* request */, int /* arg1 */, int /* arg2 */, const unsigned char* /* txdata */, int /* txlen */, int* /* response */, unsigned char* /* rxdata */, int* /* actual_rxlen */, int /* rxlen */);// Request that the auxiliary instantiates a given device, loading appropriate// support code as required. This function takes the following arguments:// 1) the location of the package that should provide this device, e.g.// devs/eth/synth// 2) the version of that package currently being used, e.g. "current"// 3) the name of the device, e.g. "ethernet". This identifies the// Tcl script that should be loaded to handle requests for this device.// 4) the name of the device instance, e.g. "eth0".// 5) device-specific initialization data. externC int synth_auxiliary_instantiate(const char*, const char*, const char*, const char*, const char*);// Support for generating strings#define SYNTH_MAKESTRING1(a) #a#define SYNTH_MAKESTRING(a) SYNTH_MAKESTRING1(a) //-----------------------------------------------------------------------------#endif // ifndef CYGONCE_HAL_HAL_IO_H// End of hal_io.h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -