/******************************************************************************* Copyright(C) Jonas 'Sortie' Termansen 2013. This file is part of the Sortix C Library. The Sortix C Library is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. The Sortix C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the Sortix C Library. If not, see . fsmarshall-msg.h User-space filesystem API. *******************************************************************************/ #ifndef INCLUDE_FSMARSHALL_MSG_H #define INCLUDE_FSMARSHALL_MSG_H #include #include #include #include #if defined(__cplusplus) extern "C" { #endif struct fsm_msg_header { size_t msgtype; size_t msgsize; }; #define FSM_RESP_ERROR 0 struct fsm_resp_error { int errnum; }; #define FSM_RESP_SUCCESS 1 struct fsm_resp_success { }; #define FSM_REQ_ABORT 2 struct fsm_req_abort { }; #define FSM_RESP_ABORT 3 struct fsm_resp_abort { }; #define FSM_REQ_SYNC 4 struct fsm_req_sync { ino_t ino; }; #define FSM_REQ_STAT 5 struct fsm_req_stat { ino_t ino; }; #define FSM_RESP_STAT 6 struct fsm_resp_stat { struct stat st; }; #define FSM_REQ_CHMOD 7 struct fsm_req_chmod { ino_t ino; mode_t mode; }; #define FSM_REQ_CHOWN 8 struct fsm_req_chown { ino_t ino; uid_t uid; gid_t gid; }; #define FSM_REQ_TRUNCATE 9 struct fsm_req_truncate { ino_t ino; off_t size; }; #define FSM_REQ_LSEEK 10 struct fsm_req_lseek { ino_t ino; off_t offset; int whence; }; #define FSM_RESP_LSEEK 11 struct fsm_resp_lseek { off_t offset; }; #define FSM_REQ_READ 12 struct fsm_req_read { ino_t ino; size_t count; }; #define FSM_REQ_PREAD 13 struct fsm_req_pread { ino_t ino; off_t offset; size_t count; }; #define FSM_RESP_READ 14 struct fsm_resp_read { size_t count; //uint8_t data[count]; }; #define FSM_REQ_WRITE 15 struct fsm_req_write { ino_t ino; size_t count; //uint8_t data[count]; }; #define FSM_REQ_PWRITE 16 struct fsm_req_pwrite { ino_t ino; off_t offset; size_t count; //uint8_t data[count]; }; #define FSM_RESP_WRITE 17 struct fsm_resp_write { size_t count; }; #define FSM_REQ_UTIMES 18 struct fsm_req_utimes { ino_t ino; struct timeval times[2]; }; #define FSM_REQ_ISATTY 19 struct fsm_req_isatty { ino_t ino; }; #define FSM_REQ_READDIRENTS 20 struct fsm_req_readdirents { ino_t ino; off_t rec_num; }; #define FSM_RESP_READDIRENTS 21 struct fsm_resp_readdirents { ino_t ino; unsigned char type; size_t namelen; //char name[namelen]; }; #define FSM_REQ_OPEN 22 struct fsm_req_open { ino_t dirino; int flags; mode_t mode; size_t namelen; //char name[namelen]; }; #define FSM_RESP_OPEN 23 struct fsm_resp_open { ino_t ino; mode_t type; }; #define FSM_REQ_MKDIR 24 struct fsm_req_mkdir { ino_t dirino; mode_t mode; size_t namelen; //char name[namelen]; }; #define FSM_RESP_MKDIR 25 struct fsm_resp_mkdir { ino_t ino; }; #define FSM_REQ_LINK 26 struct fsm_req_link { ino_t dirino; ino_t linkino; size_t namelen; //char name[namelen]; }; #define FSM_REQ_SYMLINK 27 struct fsm_req_symlink { ino_t dirino; size_t targetlen; size_t namelen; //char target[targetlen]; //char name[namelen]; }; #define FSM_REQ_READLINK 28 struct fsm_req_readlink { ino_t ino; }; #define FSM_RESP_READLINK 29 struct fsm_resp_readlink { size_t targetlen; //char target[targetlen]; }; #define FSM_REQ_TCGETWINSIZE 30 struct fsm_req_tcgetwinsize { ino_t ino; }; #define FSM_RESP_TCGETWINSIZE 31 struct fsm_resp_tcgetwinsize { struct winsize size; }; #define FSM_REQ_SETTERMMODE 32 struct fsm_req_settermmode { ino_t ino; unsigned int termmode; }; #define FSM_REQ_GETTERMMODE 33 struct fsm_req_gettermmode { ino_t ino; }; #define FSM_RESP_GETTERMMODE 34 struct fsm_resp_gettermmode { unsigned int termmode; }; #define FSM_REQ_UNLINK 35 struct fsm_req_unlink { ino_t dirino; size_t namelen; //char name[namelen]; }; #define FSM_REQ_RMDIR 36 struct fsm_req_rmdir { ino_t dirino; size_t namelen; //char name[namelen]; }; #define FSM_MSG_NUM 37 #if defined(__cplusplus) } /* extern "C" */ #endif #endif