libvxc_dat.h - vx32 - Local 9vx git repository for patches.
(HTM) git clone git://r-36.net/vx32
(DIR) Log
(DIR) Files
(DIR) Refs
---
libvxc_dat.h (4188B)
---
1 // Must keep in sync with ../libvxc/include
2
3 #include <sys/types.h>
4 #include <stdint.h>
5
6 #define VXC_MAXNAMLEN 255
7
8 // DO NOT USE "long" in this file - it needs to behave same on 32 and 64-bit.
9 #define long __no_long_here_thanks
10
11 typedef int32_t vxc_ssize_t;
12
13 typedef int32_t vxc_mode_t;
14 typedef int32_t vxc_off_t;
15 typedef uint32_t vxc_dev_t;
16 typedef uint32_t vxc_ino_t;
17 typedef int32_t vxc_nlink_t;
18 typedef int32_t vxc_blksize_t;
19 typedef int32_t vxc_blkcnt_t;
20
21 typedef int32_t vxc_id_t;
22 typedef int32_t vxc_pid_t; // XXX where else is this getting defined?
23 typedef int32_t vxc_uid_t;
24 typedef int32_t vxc_gid_t;
25
26 typedef int32_t vxc_time_t;
27 typedef int32_t vxc_clock_t;
28 typedef int32_t vxc_suseconds_t;
29
30
31 struct vxc_dirent {
32 uint32_t d_fileno;
33 uint16_t d_reclen;
34 uint8_t d_type;
35 uint8_t d_namlen;
36 char d_name[VXC_MAXNAMLEN + 1];
37 };
38
39 struct vxc_tm {
40 int tm_sec;
41 int tm_min;
42 int tm_hour;
43 int tm_mday;
44 int tm_mon;
45 int tm_year;
46 int tm_wday;
47 int tm_yday;
48 int tm_isdst;
49 };
50
51 struct vxc_utimbuf {
52 vxc_time_t actime;
53 vxc_time_t modtime;
54 };
55
56 struct vxc_timeval {
57 vxc_time_t tv_sec; // Seconds
58 vxc_suseconds_t tv_usec; // Microseconds
59 };
60
61 struct vxc_itimerval {
62 struct vxc_timeval it_interval; // Timer interval
63 struct vxc_timeval it_value; // Current value
64 };
65
66 struct vxc_stat
67 {
68 vxc_dev_t dev; // Device ID of device containing file.
69 vxc_ino_t ino; // File serial number.
70 vxc_mode_t mode; // Mode of file.
71 vxc_nlink_t nlink; // Number of hard links to the file.
72 vxc_uid_t uid; // User ID of file.
73 vxc_gid_t gid; // Group ID of file.
74 vxc_dev_t rdev; // Device ID for device special file.
75 vxc_blksize_t blksize; // Size of blocks in this file
76 vxc_blkcnt_t blocks; // Number of blocks allocated for this file
77 vxc_off_t size; // File size in bytes.
78 vxc_time_t atime; // Time of last access.
79 vxc_time_t mtime; // Time of last data modification.
80 vxc_time_t ctime; // Time of last status change.
81 };
82
83
84 // File mode bits - matching vx/env.h
85 #define VXC_S_IFMT 070000 // File type bit mask
86 #define VXC_S_IFNULL 000000 // Unused inode
87 #define VXC_S_IFREG 010000 // Regular file
88 #define VXC_S_IFDIR 020000 // Directory
89 #define VXC_S_IFLNK 030000 // Symbolic link
90 #define VXC_S_IFSOCK 040000 // Socket
91 #define VXC_S_IFIFO 050000 // FIFO
92 #define VXC_S_IFBLK 060000 // Block device
93 #define VXC_S_IFCHR 070000 // Character device
94
95 #define VXC_S_ISREG(m) (((m) & VXC_S_IFMT) == VXC_S_IFREG)
96 #define VXC_S_ISDIR(m) (((m) & VXC_S_IFMT) == VXC_S_IFDIR)
97 #define VXC_S_ISLNK(m) (((m) & VXC_S_IFMT) == VXC_S_IFLNK)
98 #define VXC_S_ISSOCK(m) (((m) & VXC_S_IFMT) == VXC_S_IFSOCK)
99 #define VXC_S_ISFIFO(m) (((m) & VXC_S_IFMT) == VXC_S_IFIFO)
100 #define VXC_S_ISBLK(m) (((m) & VXC_S_IFMT) == VXC_S_IFBLK)
101 #define VXC_S_ISCHR(m) (((m) & VXC_S_IFMT) == VXC_S_IFCHR)
102
103 #define VXC_S_ISUID 004000
104 #define VXC_S_ISGID 002000
105 #define VXC_S_ISVTX 001000
106
107 #define VXC_S_IRWXU 000700
108 #define VXC_S_IRUSR 000400
109 #define VXC_S_IWUSR 000200
110 #define VXC_S_IXUSR 000100
111
112 #define VXC_S_IRWXG 000070
113 #define VXC_S_IRGRP 000040
114 #define VXC_S_IWGRP 000020
115 #define VXC_S_IXGRP 000010
116
117 #define VXC_S_IRWXO 000007
118 #define VXC_S_IROTH 000004
119 #define VXC_S_IWOTH 000002
120 #define VXC_S_IXOTH 000001
121
122 // File access modes
123 #define VXC_O_ACCMODE 0x03 // Mask for file access modes.
124 #define VXC_O_RDONLY 0x00 // Open for reading only.
125 #define VXC_O_WRONLY 0x01 // Open for writing only.
126 #define VXC_O_RDWR 0x02 // Open for reading and writing.
127
128 // File creation flags
129 #define VXC_O_CREAT 0x10 // Create file if it does not exist.
130 #define VXC_O_EXCL 0x20 // Exclusive use flag.
131 #define VXC_O_NOCTTY 0x40 // Do not assign controlling terminal.
132 #define VXC_O_TRUNC 0x80 // Truncate flag.
133
134 // File access flags
135 #define VXC_O_APPEND 0x100 // Set append mode.
136 #define VXC_O_NONBLOCK 0x200 // Non-blocking mode.
137 #define VXC_O_SYNC 0x400 // Synchronous I/O.
138
139 // Fcntl args
140 #define VXC_F_DUPFD 0
141 #define VXC_F_GETFD 1
142 #define VXC_F_SETFD 2
143 #define VXC_F_GETFL 3
144 #define VXC_F_SETFL 4
145 // #define VXC_F_GETLK 7
146 // #define VXC_F_SETLK 8
147 // #define VXC_F_SETLKW 9
148
149 #define VXC_FD_CLOEXEC 1
150