m2mb API docs  25.21.002
m2mb API sets documentation
m2mb_fs_posix.h
Go to the documentation of this file.
1 /*===============================================================================================*/
2 /* >>> Copyright (C) Telit Communications S.p.A. Italy All Rights Reserved. <<< */
24 #ifndef M2M_M2MB_FS_POSIX_H
25 #define M2M_M2MB_FS_POSIX_H
26 
27 
28 
29 /* Global declarations ==========================================================================*/
30 /* Files open modes */
31 #define M2MB_O_RDONLY 00
32 #define M2MB_O_WRONLY 01
33 #define M2MB_O_RDWR 02
34 #define M2MB_O_LARGE 010 /* No support */
35 #define M2MB_O_CREAT 0100
36 #define M2MB_O_EXCL 0200
37 #define M2MB_O_NOCTTY 0400
38 #define M2MB_O_TRUNC 01000
39 #define M2MB_O_APPEND 02000
40 
41 #ifndef M2M_M2MB_FS_STDIO_H
42 /* File seek flags */
43 #define M2MB_SEEK_SET 0 /* Seek from beginning of file */
44 #define M2MB_SEEK_CUR 1 /* Seek from current position */
45 #define M2MB_SEEK_END 2 /* Seek from end of file */
46 #endif /* M2M_M2MB_FS_STDIO_H */
47 
48 /* File and directory permissions */
49 /* "User" permissions */
50 #define M2MB_S_IRUSR 0400 /* User has Read permission */
51 #define M2MB_S_IWUSR 0200 /* User has Write permission */
52 #define M2MB_S_IXUSR 0100 /* User has eXecute permission*/
53 #define M2MB_S_IRWXU 0700
54 /* "Group" permissions */
55 #define M2MB_S_IRGRP 0040 /* Group has Read permission */
56 #define M2MB_S_IWGRP 0020 /* Group has Write permission */
57 #define M2MB_S_IXGRP 0010 /* Group has eXecute permission */
58 #define M2MB_S_IRWXG 0070
59 /* "Other" permissions */
60 #define M2MB_S_IROTH 0004 /* Others has Read permission */
61 #define M2MB_S_IWOTH 0002 /* Others has Write permission */
62 #define M2MB_S_IXOTH 0001 /* Others has eXecutepermission */
63 #define M2MB_S_IRWXO 0007
64 /* High bits */
65 #ifndef S_ISUID
66 #define S_ISUID 04000 /* Set UID on execution */
67 #endif
68 #ifndef S_ISGID
69 #define S_ISGID 02000 /* Set GID on execution */
70 #endif
71 #define S_ISVTX 01000 /* Sticky */
72 /* Combinations */
73 #define M2MB_ACCESSPERMS 0777
74 #define M2MB_ALLPERMS 0777
75 
76 /* File system elements modes */
77 //#define M2MB_S_IFIFO 0010000 /* FIFO */
78 //#define M2MB_S_IFCHR 0020000 /* Character device */
79 #define M2MB_S_IFDIR 0040000 /* Directory */
80 //#define M2MB_S_IFBLK 0060000 /* Block device */
81 #define M2MB_S_IFREG 0100000 /* Regular file */
82 //#define M2MB_S_IFLNK 0120000 /* Symlink */
83 //#define M2MB_S_IFSOCK 0140000 /* Socket */
84 
85 #define M2MB_S_ISDIR( tempStat ) ( ( tempStat.st_mode & M2MB_S_IFDIR ) == M2MB_S_IFDIR )
86 #define M2MB_S_ISREG( tempStat ) ( ( tempStat.st_mode & M2MB_S_IFDIR ) == M2MB_S_IFDIR )
87 /* Global typedefs ==============================================================================*/
88 struct M2MB_STAT
89 {
90  DEV_T st_dev; /* Device ID */
91  INODE_T st_ino; /* Inode number */
92  MODE_T st_mode; /* File mode */
93  NLINK_T st_nlink; /* Number of links */
94  SIZE_T st_size; /* File size in bytes */
95  UINT16 st_uid; /* Owner ID */
96  UINT16 st_gid; /* Group ID */
97  UINT32 st_rdev; /* Major & Minor device number */
98  TIME_T st_atime; /* Time of last access */
99  TIME_T st_mtime; /* Time of last modification */
100  TIME_T st_ctime; /* Time of last status change */
101 };
102 
104 {
105  UINT32 f_bsize; /* file system block size */
106  UINT32 f_frsize; /* fragment size */
107  UINT32 f_blocks; /* size of fs in f_frsize units */
108  UINT32 f_bfree; /* number of free blocks */
109  UINT32 f_bavail; /* number free blocks for unprivileged users */
110 };
111 
112 /* This struct must be used only as a pointer. The actual structure is opaque to users. */
113 typedef struct M2MB_DIR_TAG M2MB_DIR_T;
114 
116 {
117  CHAR d_name[1024]; /* filename */
118 };
119 
120 
121 /* Global functions =============================================================================*/
122 /*-----------------------------------------------------------------------------------------------*/
180 /*-----------------------------------------------------------------------------------------------*/
181 INT32 m2mb_fs_open( const CHAR *path, INT32 oflag, ... );
182 
183 /*-----------------------------------------------------------------------------------------------*/
211 /*-----------------------------------------------------------------------------------------------*/
212 SSIZE_T m2mb_fs_read( INT32 fd, void *buf, SIZE_T nbyte );
213 
214 /*-----------------------------------------------------------------------------------------------*/
242 /*-----------------------------------------------------------------------------------------------*/
243 SSIZE_T m2mb_fs_write( INT32 fd, const void *buf, SIZE_T nbyte );
244 
245 /*-----------------------------------------------------------------------------------------------*/
268 /*-----------------------------------------------------------------------------------------------*/
269 INT32 m2mb_fs_close( INT32 fd );
270 
271 /*-----------------------------------------------------------------------------------------------*/
303 OFF_T m2mb_fs_lseek( INT32 fd, OFF_T offset, INT32 whence );
304 
305 /*-----------------------------------------------------------------------------------------------*/
330 /*-----------------------------------------------------------------------------------------------*/
331 INT32 m2mb_fs_stat( const CHAR *path, struct M2MB_STAT *buf );
332 
333 /*-----------------------------------------------------------------------------------------------*/
358 /*-----------------------------------------------------------------------------------------------*/
359 INT32 m2mb_fs_fstat( INT32 fd, struct M2MB_STAT *buf );
360 
361 /*-----------------------------------------------------------------------------------------------*/
384 /*-----------------------------------------------------------------------------------------------*/
385 INT32 m2mb_fs_unlink( const CHAR *path );
386 
387 /*-----------------------------------------------------------------------------------------------*/
412 /*-----------------------------------------------------------------------------------------------*/
413 INT32 m2mb_fs_truncate( const CHAR *path, OFF_T length );
414 
415 /*-----------------------------------------------------------------------------------------------*/
441 /*-----------------------------------------------------------------------------------------------*/
442 INT32 m2mb_fs_mkdir( const CHAR *path, MODE_T mode );
443 
444 /*-----------------------------------------------------------------------------------------------*/
468 /*-----------------------------------------------------------------------------------------------*/
469 INT32 m2mb_fs_rmdir( const CHAR *path );
470 
471 /*-----------------------------------------------------------------------------------------------*/
495 /*-----------------------------------------------------------------------------------------------*/
496 M2MB_DIR_T *m2mb_fs_opendir( const CHAR *name );
497 
498 /*-----------------------------------------------------------------------------------------------*/
526 /*-----------------------------------------------------------------------------------------------*/
527 struct M2MB_DIRENT *m2mb_fs_readdir( M2MB_DIR_T *dirp );
528 
529 /*-----------------------------------------------------------------------------------------------*/
553 /*-----------------------------------------------------------------------------------------------*/
554 INT32 m2mb_fs_closedir( M2MB_DIR_T *dirp );
555 
556 /*-----------------------------------------------------------------------------------------------*/
581 /*-----------------------------------------------------------------------------------------------*/
582 INT32 m2mb_fs_statvfs( const CHAR *path, struct M2MB_STATVFS *buf );
583 
584 
585 
586 #endif /* M2M_M2MB_FS_POSIX_H */
587 
m2mb_fs_unlink
INT32 m2mb_fs_unlink(const CHAR *path)
Delete file.
M2MB_STATVFS
Definition: m2mb_fs_posix.h:103
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:88
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:115