sortix-mirror/libc/include/fsmarshall-msg.h

507 lines
7.1 KiB
C

/*
* Copyright (c) 2013, 2014, 2015, 2016 Jonas 'Sortie' Termansen.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* fsmarshall-msg.h
* User-space filesystem API.
*/
#ifndef INCLUDE_FSMARSHALL_MSG_H
#define INCLUDE_FSMARSHALL_MSG_H
#include <sys/cdefs.h>
#include <sys/types.h>
#include <stddef.h>
#include <sortix/stat.h>
#include <sortix/statvfs.h>
#include <sortix/termios.h>
#include <sortix/timespec.h>
#include <sortix/winsize.h>
#ifdef __cplusplus
extern "C" {
#endif
#define FSM_MOUNT_CLOEXEC (1 << 0)
#define FSM_MOUNT_CLOFORK (1 << 1)
#define FSM_MOUNT_NOFOLLOW (1 << 2)
#define FSM_MOUNT_NONBLOCK (1 << 3)
struct fsm_msg_header
{
size_t msgtype;
size_t msgsize;
uid_t uid;
gid_t gid;
};
#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_UTIMENS 18
struct fsm_req_utimens
{
ino_t ino;
struct timespec 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_REQ_RENAME 37
struct fsm_req_rename
{
ino_t olddirino;
ino_t newdirino;
size_t oldnamelen;
size_t newnamelen;
/*char oldname[oldnamelen];*/
/*char newname[newnamelen];*/
};
#define FSM_REQ_REFER 38
struct fsm_req_refer
{
ino_t ino;
};
#define FSM_REQ_UNREF 39
struct fsm_req_unref
{
ino_t ino;
};
#define FSM_REQ_TCSETPGRP 40
struct fsm_req_tcsetpgrp
{
ino_t ino;
pid_t pgid;
};
#define FSM_REQ_TCGETPGRP 41
struct fsm_req_tcgetpgrp
{
ino_t ino;
};
#define FSM_RESP_TCGETPGRP 42
struct fsm_resp_tcgetpgrp
{
pid_t pgid;
};
#define FSM_REQ_TCGETWINCURPOS 43
struct fsm_req_tcgetwincurpos
{
ino_t ino;
};
#define FSM_REQ_STATVFS 44
struct fsm_req_statvfs
{
ino_t ino;
};
#define FSM_RESP_STATVFS 45
struct fsm_resp_statvfs
{
struct statvfs stvfs;
};
#define FSM_REQ_SETSOCKOPT 46
struct fsm_req_setsockopt
{
ino_t ino;
int level;
int option_name;
size_t option_size;
/*uint8_t option[option_size];*/
};
#define FSM_REQ_GETSOCKOPT 47
struct fsm_req_getsockopt
{
ino_t ino;
int level;
int option_name;
size_t max_option_size;
};
#define FSM_RESP_GETSOCKOPT 48
struct fsm_resp_getsockopt
{
size_t option_size;
/*uint8_t option[option_size];*/
};
#define FSM_REQ_TCGETBLOB 49
struct fsm_req_tcgetblob
{
ino_t ino;
size_t namelen;
/*char name[namelen];*/
};
#define FSM_RESP_TCGETBLOB 50
struct fsm_resp_tcgetblob
{
size_t count;
/*uint8_t data[count];*/
};
#define FSM_REQ_TCSETBLOB 51
struct fsm_req_tcsetblob
{
ino_t ino;
size_t namelen;
size_t count;
/*char name[namelen];*/
/*uint8_t data[count];*/
};
#define FSM_RESP_TCSETBLOB 52
struct fsm_resp_tcsetblob
{
size_t count;
};
#define FSM_RESP_TCGETWINCURPOS 53
struct fsm_resp_tcgetwincurpos
{
struct wincurpos pos;
};
#define FSM_REQ_TCDRAIN 54
struct fsm_req_tcdrain
{
ino_t ino;
};
#define FSM_REQ_TCFLOW 55
struct fsm_req_tcflow
{
ino_t ino;
int action;
};
#define FSM_REQ_TCFLUSH 56
struct fsm_req_tcflush
{
ino_t ino;
int queue_selector;
};
#define FSM_REQ_TCGETATTR 57
struct fsm_req_tcgetattr
{
ino_t ino;
};
#define FSM_RESP_TCGETATTR 58
struct fsm_resp_tcgetattr
{
struct termios tio;
};
#define FSM_REQ_TCGETSID 59
struct fsm_req_tcgetsid
{
ino_t ino;
};
#define FSM_RESP_TCGETSID 60
struct fsm_resp_tcgetsid
{
pid_t sid;
};
#define FSM_REQ_TCSENDBREAK 61
struct fsm_req_tcsendbreak
{
ino_t ino;
int duration;
};
#define FSM_REQ_TCSETATTR 62
struct fsm_req_tcsetattr
{
ino_t ino;
int actions;
struct termios tio;
};
#define FSM_REQ_SHUTDOWN 63
struct fsm_req_shutdown
{
ino_t ino;
int how;
};
#define FSM_MSG_NUM 64
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif