m2mb API docs  25.30.004.0
m2mb API sets documentation
m2mb_fs_posix.h
Go to the documentation of this file.
1 /* $version: 252203 */
2 /*===============================================================================================*/
3 /* >>> Copyright (C) Telit Communications S.p.A. Italy All Rights Reserved. <<< */
25 #ifndef M2M_M2MB_FS_POSIX_H
26 #define M2M_M2MB_FS_POSIX_H
27 
28 
29 
30 /* Global declarations ==========================================================================*/
31 /* Files open modes */
32 #define M2MB_O_RDONLY 00
33 #define M2MB_O_WRONLY 01
34 #define M2MB_O_RDWR 02
35 #define M2MB_O_LARGE 010
36 #define M2MB_O_CREAT 0100
37 #define M2MB_O_EXCL 0200
38 #define M2MB_O_NOCTTY 0400
39 #define M2MB_O_TRUNC 01000
40 #define M2MB_O_APPEND 02000
41 
42 #ifndef M2M_M2MB_FS_STDIO_H
43 /* File seek flags */
44 #define M2MB_SEEK_SET 0 /* Seek from beginning of file */
45 #define M2MB_SEEK_CUR 1 /* Seek from current position */
46 #define M2MB_SEEK_END 2 /* Seek from end of file */
47 #endif /* M2M_M2MB_FS_STDIO_H */
48 
49 /* File and directory permissions */
50 /* "User" permissions */
51 #define M2MB_S_IRUSR 0400 /* User has Read permission */
52 #define M2MB_S_IWUSR 0200 /* User has Write permission */
53 #define M2MB_S_IXUSR 0100 /* User has eXecute permission*/
54 #define M2MB_S_IRWXU 0700
55 /* "Group" permissions */
56 #define M2MB_S_IRGRP 0040 /* Group has Read permission */
57 #define M2MB_S_IWGRP 0020 /* Group has Write permission */
58 #define M2MB_S_IXGRP 0010 /* Group has eXecute permission */
59 #define M2MB_S_IRWXG 0070
60 /* "Other" permissions */
61 #define M2MB_S_IROTH 0004 /* Others has Read permission */
62 #define M2MB_S_IWOTH 0002 /* Others has Write permission */
63 #define M2MB_S_IXOTH 0001 /* Others has eXecutepermission */
64 #define M2MB_S_IRWXO 0007
65 /* High bits */
66 #define S_ISUID 04000 /* Set UID on execution */
67 #define S_ISGID 02000 /* Set GID on execution */
68 #define S_ISVTX 01000 /* Sticky */
69 /* Combinations */
70 #define M2MB_ACCESSPERMS 0777
71 #define M2MB_ALLPERMS 0777
72 
73 /* File system elements modes */
74 //#define M2MB_S_IFIFO 0010000 /* FIFO */
75 //#define M2MB_S_IFCHR 0020000 /* Character device */
76 #define M2MB_S_IFDIR 0040000 /* Directory */
77 //#define M2MB_S_IFBLK 0060000 /* Block device */
78 #define M2MB_S_IFREG 0100000 /* Regular file */
79 //#define M2MB_S_IFLNK 0120000 /* Symlink */
80 //#define M2MB_S_IFSOCK 0140000 /* Socket */
81 
82 #define M2MB_S_ISDIR( tempStat ) ( ( tempStat.st_mode & M2MB_S_IFDIR ) == M2MB_S_IFDIR )
83 #define M2MB_S_ISREG( tempStat ) ( ( tempStat.st_mode & M2MB_S_IFDIR ) == M2MB_S_IFDIR )
84 /* Global typedefs ==============================================================================*/
85 struct M2MB_STAT
86 {
87  DEV_T st_dev; /* Device ID */
88  INODE_T st_ino; /* Inode number */
89  MODE_T st_mode; /* File mode */
90  NLINK_T st_nlink; /* Number of links */
91  SIZE_T st_size; /* File size in bytes */
92  UINT16 st_uid; /* Owner ID */
93  UINT16 st_gid; /* Group ID */
94  UINT32 st_rdev; /* Major & Minor device number */
95  TIME_T st_atime; /* Time of last access */
96  TIME_T st_mtime; /* Time of last modification */
97  TIME_T st_ctime; /* Time of last status change */
98 };
99 
101 {
102  UINT32 f_bsize; /* file system block size */
103  UINT32 f_frsize; /* fragment size */
104  UINT32 f_blocks; /* size of fs in f_frsize units */
105  UINT32 f_bfree; /* number of free blocks */
106  UINT32 f_bavail; /* number free blocks for unprivileged users */
107 };
108 
109 /* This struct must be used only as a pointer. The actual structure is opaque to users. */
110 typedef struct M2MB_DIR_TAG M2MB_DIR_T;
111 
113 {
114  CHAR d_name[1024]; /* filename */
115 };
116 
117 
118 /* Global functions =============================================================================*/
119 /*-----------------------------------------------------------------------------------------------*/
174 /*-----------------------------------------------------------------------------------------------*/
175 INT32 m2mb_fs_open( const CHAR *path, INT32 oflag, ... );
176 
177 /*-----------------------------------------------------------------------------------------------*/
205 /*-----------------------------------------------------------------------------------------------*/
206 SSIZE_T m2mb_fs_read( INT32 fd, void *buf, SIZE_T nbyte );
207 
208 /*-----------------------------------------------------------------------------------------------*/
236 /*-----------------------------------------------------------------------------------------------*/
237 SSIZE_T m2mb_fs_write( INT32 fd, const void *buf, SIZE_T nbyte );
238 
239 /*-----------------------------------------------------------------------------------------------*/
262 /*-----------------------------------------------------------------------------------------------*/
263 INT32 m2mb_fs_close( INT32 fd );
264 
265 /*-----------------------------------------------------------------------------------------------*/
297 OFF_T m2mb_fs_lseek( INT32 fd, OFF_T offset, INT32 whence );
298 
299 /*-----------------------------------------------------------------------------------------------*/
324 /*-----------------------------------------------------------------------------------------------*/
325 INT32 m2mb_fs_stat( const CHAR *path, struct M2MB_STAT *buf );
326 
327 /*-----------------------------------------------------------------------------------------------*/
352 /*-----------------------------------------------------------------------------------------------*/
353 INT32 m2mb_fs_fstat( INT32 fd, struct M2MB_STAT *buf );
354 
355 /*-----------------------------------------------------------------------------------------------*/
378 /*-----------------------------------------------------------------------------------------------*/
379 INT32 m2mb_fs_unlink( const CHAR *path );
380 
381 /*-----------------------------------------------------------------------------------------------*/
406 /*-----------------------------------------------------------------------------------------------*/
407 INT32 m2mb_fs_truncate( const CHAR *path, OFF_T length );
408 
409 /*-----------------------------------------------------------------------------------------------*/
435 /*-----------------------------------------------------------------------------------------------*/
436 INT32 m2mb_fs_mkdir( const CHAR *path, MODE_T mode );
437 
438 /*-----------------------------------------------------------------------------------------------*/
462 /*-----------------------------------------------------------------------------------------------*/
463 INT32 m2mb_fs_rmdir( const CHAR *path );
464 
465 /*-----------------------------------------------------------------------------------------------*/
489 /*-----------------------------------------------------------------------------------------------*/
490 M2MB_DIR_T *m2mb_fs_opendir( const CHAR *name );
491 
492 /*-----------------------------------------------------------------------------------------------*/
520 /*-----------------------------------------------------------------------------------------------*/
521 struct M2MB_DIRENT *m2mb_fs_readdir( M2MB_DIR_T *dirp );
522 
523 /*-----------------------------------------------------------------------------------------------*/
547 /*-----------------------------------------------------------------------------------------------*/
548 INT32 m2mb_fs_closedir( M2MB_DIR_T *dirp );
549 
550 /*-----------------------------------------------------------------------------------------------*/
575 /*-----------------------------------------------------------------------------------------------*/
576 INT32 m2mb_fs_statvfs( const CHAR *path, struct M2MB_STATVFS *buf );
577 
578 
579 
580 #endif /* M2M_M2MB_FS_POSIX_H */
581 
m2mb_fs_unlink
INT32 m2mb_fs_unlink(const CHAR *path)
Delete file.
M2MB_STATVFS
Definition: m2mb_fs_posix.h:100
m2mb_fs_fstat
INT32 m2mb_fs_fstat(INT32 fd, struct M2MB_STAT *buf)
File status.
m2mb_fs_lseek
OFF_T m2mb_fs_lseek(INT32 fd, OFF_T offset, INT32 whence)
Move file offset.
m2mb_fs_write
SSIZE_T m2mb_fs_write(INT32 fd, const void *buf, SIZE_T nbyte)
Write file.
m2mb_fs_opendir
M2MB_DIR_T * m2mb_fs_opendir(const CHAR *name)
Open directory as stream.
m2mb_fs_stat
INT32 m2mb_fs_stat(const CHAR *path, struct M2MB_STAT *buf)
File status.
m2mb_fs_closedir
INT32 m2mb_fs_closedir(M2MB_DIR_T *dirp)
Close directory as stream.
M2MB_STAT
Definition: m2mb_fs_posix.h:85
m2mb_fs_truncate
INT32 m2mb_fs_truncate(const CHAR *path, OFF_T length)
Truncate file.
m2mb_fs_open
INT32 m2mb_fs_open(const CHAR *path, INT32 oflag,...)
Open file.
m2mb_fs_close
INT32 m2mb_fs_close(INT32 fd)
Close file.
m2mb_fs_read
SSIZE_T m2mb_fs_read(INT32 fd, void *buf, SIZE_T nbyte)
Read file.
m2mb_fs_mkdir
INT32 m2mb_fs_mkdir(const CHAR *path, MODE_T mode)
Create directory.
m2mb_fs_rmdir
INT32 m2mb_fs_rmdir(const CHAR *path)
Remove directory.
m2mb_fs_statvfs
INT32 m2mb_fs_statvfs(const CHAR *path, struct M2MB_STATVFS *buf)
File system statistics.
m2mb_fs_readdir
struct M2MB_DIRENT * m2mb_fs_readdir(M2MB_DIR_T *dirp)
Read directory as stream.
M2MB_DIRENT
Definition: m2mb_fs_posix.h:112