Coda Distributed File System
Classes | Macros | Enumerations | Variables
9pfs.h File Reference
#include <sys/types.h>
#include <stdint.h>
#include <dlist.h>
#include <mariner.h>
Include dependency graph for 9pfs.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  plan9_qid
 
struct  plan9_stat
 
struct  plan9_stat_dotl
 
struct  plan9_statfs
 
class  plan9server
 

Macros

#define P9_MAGIC_LEN   19
 
#define P9_PROTO_UNKNOWN   0x00
 
#define P9_PROTO_2000   0x01 /* 9P2000 Legacy protocol */
 
#define P9_PROTO_DOTU   0x02 /* 9P2000.u Unix Extensions */
 
#define P9_PROTO_DOTL   0x04 /* 9P2000.L Linux Extensions */
 
#define P9_NOTAG   ((uint16_t)~0) /* version message should use 'NOTAG' */
 
#define P9_NOFID   ((uint32_t)~0) /* noauth attach uses 'NOFID' for 'afid' */
 
#define P9_MAX_NWNAME   16 /* max elements in walk message */
 
#define P9_MIN_MSGSIZE   (sizeof(uint32_t) + sizeof(uint8_t) + sizeof(uint16_t))
 
#define P9_DMDIR   0x80000000
 
#define P9_DMAPPEND   0x40000000 /* unsupported */
 
#define P9_DMEXCL   0x20000000 /* unsupported */
 
#define P9_DMMOUNT   0x10000000 /* unsupported */
 
#define P9_DMAUTH   0x08000000
 
#define P9_DMTMP   0x04000000 /* unsupported */
 
#define P9_DMSYMLINK   0x02000000
 
#define P9_DMLINK   0x01000000
 
#define P9_DMDEVICE   0x00800000 /* unsupported */
 
#define P9_DMNAMEDPIPE   0x00200000 /* unsupported */
 
#define P9_DMSOCKET   0x00100000 /* unsupported */
 
#define P9_DMSETUID   0x00080000 /* unsupported */
 
#define P9_DMSETGID   0x00040000 /* unsupported */
 
#define P9_DMSETVTX   0x00010000 /* unsupported */
 
#define P9_QTDIR   0x80
 
#define P9_QTAPPEND   0x40 /* unsupported */
 
#define P9_QTEXCL   0x20 /* unsupported */
 
#define P9_QTMOUNT   0x10 /* unsupported */
 
#define P9_QTAUTH   0x08
 
#define P9_QTTMP   0x04 /* unsupported */
 
#define P9_QTSYMLINK   0x02
 
#define P9_QTLINK   0x01
 
#define P9_QTFILE   0x00
 
#define P9_OREAD   0x00
 
#define P9_OWRITE   0x01
 
#define P9_ORDWR   0x02
 
#define P9_OEXEC   0x03
 
#define P9_OTRUNC   0x10
 
#define P9_OREXEC   0x20 /* unsupported */
 
#define P9_ORCLOSE   0x40 /* unsupported */
 
#define P9_OAPPEND   0x80
 
#define P9_OEXCL   0x1000 /* unsupported */
 
#define P9_DOTL_RDONLY   00000000
 
#define P9_DOTL_WRONLY   00000001
 
#define P9_DOTL_RDWR   00000002
 
#define P9_DOTL_NOACCESS   00000003
 
#define P9_DOTL_CREATE   00000100
 
#define P9_DOTL_EXCL   00000200 /* unsupported */
 
#define P9_DOTL_NOCTTY   00000400
 
#define P9_DOTL_TRUNC   00001000
 
#define P9_DOTL_APPEND   00002000
 
#define P9_DOTL_NONBLOCK   00004000
 
#define P9_DOTL_DSYNC   00010000 /* unsupported */
 
#define P9_DOTL_FASYNC   00020000 /* unsupported */
 
#define P9_DOTL_DIRECT   00040000 /* unsupported */
 
#define P9_DOTL_LARGEFILE   00100000
 
#define P9_DOTL_DIRECTORY   00200000
 
#define P9_DOTL_NOFOLLOW   00400000
 
#define P9_DOTL_NOATIME   01000000 /* unsupported */
 
#define P9_DOTL_CLOEXEC   02000000 /* unsupported */
 
#define P9_DOTL_SYNC   04000000 /* unsupported */
 
#define P9_DOTL_AT_REMOVEDIR   0x200
 
#define P9_DONT_TOUCH_TYPE   ((uint16_t)(-1))
 
#define P9_DONT_TOUCH_DEV   ((uint32_t)(-1))
 
#define P9_DONT_TOUCH_QID_TYPE   ((uint8_t)(-1))
 
#define P9_DONT_TOUCH_QID_VERS   ((uint32_t)(-1))
 
#define P9_DONT_TOUCH_QID_PATH   ((uint64_t)(-1))
 
#define P9_DONT_TOUCH_MODE   ((uint32_t)(-1))
 
#define P9_DONT_TOUCH_ATIME   ((uint32_t)(-1))
 
#define P9_DONT_TOUCH_MTIME   ((uint32_t)(-1))
 
#define P9_DONT_TOUCH_LENGTH   ((uint64_t)(-1))
 
#define P9_DONT_TOUCH_NAME   ""
 
#define P9_DONT_TOUCH_UID   ""
 
#define P9_DONT_TOUCH_GID   ""
 
#define P9_DONT_TOUCH_MUID   ""
 
#define P9_DONT_TOUCH_EXTENSION   ""
 
#define P9_DONT_TOUCH_NUID   ((uint32_t)(-1))
 
#define P9_DONT_TOUCH_NGID   ((uint32_t)(-1))
 
#define P9_DONT_TOUCH_NMUID   ((uint32_t)(-1))
 
#define P9_GETATTR_MODE   0x00000001ULL
 
#define P9_GETATTR_NLINK   0x00000002ULL
 
#define P9_GETATTR_UID   0x00000004ULL
 
#define P9_GETATTR_GID   0x00000008ULL
 
#define P9_GETATTR_RDEV   0x00000010ULL
 
#define P9_GETATTR_ATIME   0x00000020ULL
 
#define P9_GETATTR_MTIME   0x00000040ULL
 
#define P9_GETATTR_CTIME   0x00000080ULL
 
#define P9_GETATTR_INO   0x00000100ULL
 
#define P9_GETATTR_SIZE   0x00000200ULL
 
#define P9_GETATTR_BLOCKS   0x00000400ULL
 
#define P9_GETATTR_BTIME   0x00000800ULL
 
#define P9_GETATTR_GEN   0x00001000ULL
 
#define P9_GETATTR_DATA_VERSION   0x00002000ULL
 
#define P9_GETATTR_BASIC   0x000007ffULL /* Mask for fields up to BLOCKS */
 
#define P9_GETATTR_ALL   0x00003fffULL /* Mask for All fields above */
 
#define P9_SETATTR_MODE   0x00000001UL
 
#define P9_SETATTR_UID   0x00000002UL
 
#define P9_SETATTR_GID   0x00000004UL
 
#define P9_SETATTR_SIZE   0x00000008UL
 
#define P9_SETATTR_ATIME   0x00000010UL
 
#define P9_SETATTR_MTIME   0x00000020UL
 
#define P9_SETATTR_CTIME   0x00000040UL
 
#define P9_SETATTR_ATIME_SET   0x00000080UL
 
#define P9_SETATTR_MTIME_SET   0x00000100UL
 
#define V9FS_MAGIC   0x01021997
 
#define P9_BUFSIZE   8192
 

Enumerations

enum  plan9_message_types {
  Tversion = 100 , Rversion , Tauth = 102 , Rauth ,
  Tattach = 104 , Rattach , Terror , Rerror = 107 ,
  Tflush = 108 , Rflush , Twalk = 110 , Rwalk ,
  Topen = 112 , Ropen , Tcreate = 114 , Rcreate ,
  Tread = 116 , Rread , Twrite = 118 , Rwrite ,
  Tclunk = 120 , Rclunk , Tremove = 122 , Rremove ,
  Tstat = 124 , Rstat , Twstat = 126 , Rwstat
}
 
enum  plan9_dotl_message_types {
  Rlerror = 7 , Tstatfs = 8 , Rstatfs , Tlopen = 12 ,
  Rlopen , Tlcreate = 14 , Rlcreate , Tsymlink = 16 ,
  Rsymlink , Tmknod = 18 , Rmknod , Trename = 20 ,
  Rrename , Treadlink = 22 , Rreadlink , Tgetattr = 24 ,
  Rgetattr , Tsetattr = 26 , Rsetattr , Txattrwalk = 30 ,
  Rxattrwalk , Txattrcreate = 32 , Rxattrcreate , Treaddir = 40 ,
  Rreaddir , Tfsync = 50 , Rfsync , Tlock = 52 ,
  Rlock , Tgetlock = 54 , Rgetlock , Tlink = 70 ,
  Rlink , Tmkdir = 72 , Rmkdir , Trenameat = 74 ,
  Rrenameat , Tunlinkat = 76 , Runlinkat
}
 

Variables

const unsigned char p9_magic1 [] = "\0\0\0d"
 
const unsigned char p9_magic12 [] = "\09P2000"
 

Macro Definition Documentation

◆ P9_BUFSIZE

#define P9_BUFSIZE   8192

◆ P9_DMAPPEND

#define P9_DMAPPEND   0x40000000 /* unsupported */

◆ P9_DMAUTH

#define P9_DMAUTH   0x08000000

◆ P9_DMDEVICE

#define P9_DMDEVICE   0x00800000 /* unsupported */

◆ P9_DMDIR

#define P9_DMDIR   0x80000000

◆ P9_DMEXCL

#define P9_DMEXCL   0x20000000 /* unsupported */

◆ P9_DMLINK

#define P9_DMLINK   0x01000000

◆ P9_DMMOUNT

#define P9_DMMOUNT   0x10000000 /* unsupported */

◆ P9_DMNAMEDPIPE

#define P9_DMNAMEDPIPE   0x00200000 /* unsupported */

◆ P9_DMSETGID

#define P9_DMSETGID   0x00040000 /* unsupported */

◆ P9_DMSETUID

#define P9_DMSETUID   0x00080000 /* unsupported */

◆ P9_DMSETVTX

#define P9_DMSETVTX   0x00010000 /* unsupported */

◆ P9_DMSOCKET

#define P9_DMSOCKET   0x00100000 /* unsupported */

◆ P9_DMSYMLINK

#define P9_DMSYMLINK   0x02000000

◆ P9_DMTMP

#define P9_DMTMP   0x04000000 /* unsupported */

◆ P9_DONT_TOUCH_ATIME

#define P9_DONT_TOUCH_ATIME   ((uint32_t)(-1))

◆ P9_DONT_TOUCH_DEV

#define P9_DONT_TOUCH_DEV   ((uint32_t)(-1))

◆ P9_DONT_TOUCH_EXTENSION

#define P9_DONT_TOUCH_EXTENSION   ""

◆ P9_DONT_TOUCH_GID

#define P9_DONT_TOUCH_GID   ""

◆ P9_DONT_TOUCH_LENGTH

#define P9_DONT_TOUCH_LENGTH   ((uint64_t)(-1))

◆ P9_DONT_TOUCH_MODE

#define P9_DONT_TOUCH_MODE   ((uint32_t)(-1))

◆ P9_DONT_TOUCH_MTIME

#define P9_DONT_TOUCH_MTIME   ((uint32_t)(-1))

◆ P9_DONT_TOUCH_MUID

#define P9_DONT_TOUCH_MUID   ""

◆ P9_DONT_TOUCH_NAME

#define P9_DONT_TOUCH_NAME   ""

◆ P9_DONT_TOUCH_NGID

#define P9_DONT_TOUCH_NGID   ((uint32_t)(-1))

◆ P9_DONT_TOUCH_NMUID

#define P9_DONT_TOUCH_NMUID   ((uint32_t)(-1))

◆ P9_DONT_TOUCH_NUID

#define P9_DONT_TOUCH_NUID   ((uint32_t)(-1))

◆ P9_DONT_TOUCH_QID_PATH

#define P9_DONT_TOUCH_QID_PATH   ((uint64_t)(-1))

◆ P9_DONT_TOUCH_QID_TYPE

#define P9_DONT_TOUCH_QID_TYPE   ((uint8_t)(-1))

◆ P9_DONT_TOUCH_QID_VERS

#define P9_DONT_TOUCH_QID_VERS   ((uint32_t)(-1))

◆ P9_DONT_TOUCH_TYPE

#define P9_DONT_TOUCH_TYPE   ((uint16_t)(-1))

◆ P9_DONT_TOUCH_UID

#define P9_DONT_TOUCH_UID   ""

◆ P9_DOTL_APPEND

#define P9_DOTL_APPEND   00002000

◆ P9_DOTL_AT_REMOVEDIR

#define P9_DOTL_AT_REMOVEDIR   0x200

◆ P9_DOTL_CLOEXEC

#define P9_DOTL_CLOEXEC   02000000 /* unsupported */

◆ P9_DOTL_CREATE

#define P9_DOTL_CREATE   00000100

◆ P9_DOTL_DIRECT

#define P9_DOTL_DIRECT   00040000 /* unsupported */

◆ P9_DOTL_DIRECTORY

#define P9_DOTL_DIRECTORY   00200000

◆ P9_DOTL_DSYNC

#define P9_DOTL_DSYNC   00010000 /* unsupported */

◆ P9_DOTL_EXCL

#define P9_DOTL_EXCL   00000200 /* unsupported */

◆ P9_DOTL_FASYNC

#define P9_DOTL_FASYNC   00020000 /* unsupported */

◆ P9_DOTL_LARGEFILE

#define P9_DOTL_LARGEFILE   00100000

◆ P9_DOTL_NOACCESS

#define P9_DOTL_NOACCESS   00000003

◆ P9_DOTL_NOATIME

#define P9_DOTL_NOATIME   01000000 /* unsupported */

◆ P9_DOTL_NOCTTY

#define P9_DOTL_NOCTTY   00000400

◆ P9_DOTL_NOFOLLOW

#define P9_DOTL_NOFOLLOW   00400000

◆ P9_DOTL_NONBLOCK

#define P9_DOTL_NONBLOCK   00004000

◆ P9_DOTL_RDONLY

#define P9_DOTL_RDONLY   00000000

◆ P9_DOTL_RDWR

#define P9_DOTL_RDWR   00000002

◆ P9_DOTL_SYNC

#define P9_DOTL_SYNC   04000000 /* unsupported */

◆ P9_DOTL_TRUNC

#define P9_DOTL_TRUNC   00001000

◆ P9_DOTL_WRONLY

#define P9_DOTL_WRONLY   00000001

◆ P9_GETATTR_ALL

#define P9_GETATTR_ALL   0x00003fffULL /* Mask for All fields above */

◆ P9_GETATTR_ATIME

#define P9_GETATTR_ATIME   0x00000020ULL

◆ P9_GETATTR_BASIC

#define P9_GETATTR_BASIC   0x000007ffULL /* Mask for fields up to BLOCKS */

◆ P9_GETATTR_BLOCKS

#define P9_GETATTR_BLOCKS   0x00000400ULL

◆ P9_GETATTR_BTIME

#define P9_GETATTR_BTIME   0x00000800ULL

◆ P9_GETATTR_CTIME

#define P9_GETATTR_CTIME   0x00000080ULL

◆ P9_GETATTR_DATA_VERSION

#define P9_GETATTR_DATA_VERSION   0x00002000ULL

◆ P9_GETATTR_GEN

#define P9_GETATTR_GEN   0x00001000ULL

◆ P9_GETATTR_GID

#define P9_GETATTR_GID   0x00000008ULL

◆ P9_GETATTR_INO

#define P9_GETATTR_INO   0x00000100ULL

◆ P9_GETATTR_MODE

#define P9_GETATTR_MODE   0x00000001ULL

◆ P9_GETATTR_MTIME

#define P9_GETATTR_MTIME   0x00000040ULL

◆ P9_GETATTR_NLINK

#define P9_GETATTR_NLINK   0x00000002ULL

◆ P9_GETATTR_RDEV

#define P9_GETATTR_RDEV   0x00000010ULL

◆ P9_GETATTR_SIZE

#define P9_GETATTR_SIZE   0x00000200ULL

◆ P9_GETATTR_UID

#define P9_GETATTR_UID   0x00000004ULL

◆ P9_MAGIC_LEN

#define P9_MAGIC_LEN   19

◆ P9_MAX_NWNAME

#define P9_MAX_NWNAME   16 /* max elements in walk message */

◆ P9_MIN_MSGSIZE

#define P9_MIN_MSGSIZE   (sizeof(uint32_t) + sizeof(uint8_t) + sizeof(uint16_t))

◆ P9_NOFID

#define P9_NOFID   ((uint32_t)~0) /* noauth attach uses 'NOFID' for 'afid' */

◆ P9_NOTAG

#define P9_NOTAG   ((uint16_t)~0) /* version message should use 'NOTAG' */

◆ P9_OAPPEND

#define P9_OAPPEND   0x80

◆ P9_OEXCL

#define P9_OEXCL   0x1000 /* unsupported */

◆ P9_OEXEC

#define P9_OEXEC   0x03

◆ P9_ORCLOSE

#define P9_ORCLOSE   0x40 /* unsupported */

◆ P9_ORDWR

#define P9_ORDWR   0x02

◆ P9_OREAD

#define P9_OREAD   0x00

◆ P9_OREXEC

#define P9_OREXEC   0x20 /* unsupported */

◆ P9_OTRUNC

#define P9_OTRUNC   0x10

◆ P9_OWRITE

#define P9_OWRITE   0x01

◆ P9_PROTO_2000

#define P9_PROTO_2000   0x01 /* 9P2000 Legacy protocol */

◆ P9_PROTO_DOTL

#define P9_PROTO_DOTL   0x04 /* 9P2000.L Linux Extensions */

◆ P9_PROTO_DOTU

#define P9_PROTO_DOTU   0x02 /* 9P2000.u Unix Extensions */

◆ P9_PROTO_UNKNOWN

#define P9_PROTO_UNKNOWN   0x00

◆ P9_QTAPPEND

#define P9_QTAPPEND   0x40 /* unsupported */

◆ P9_QTAUTH

#define P9_QTAUTH   0x08

◆ P9_QTDIR

#define P9_QTDIR   0x80

◆ P9_QTEXCL

#define P9_QTEXCL   0x20 /* unsupported */

◆ P9_QTFILE

#define P9_QTFILE   0x00

◆ P9_QTLINK

#define P9_QTLINK   0x01

◆ P9_QTMOUNT

#define P9_QTMOUNT   0x10 /* unsupported */

◆ P9_QTSYMLINK

#define P9_QTSYMLINK   0x02

◆ P9_QTTMP

#define P9_QTTMP   0x04 /* unsupported */

◆ P9_SETATTR_ATIME

#define P9_SETATTR_ATIME   0x00000010UL

◆ P9_SETATTR_ATIME_SET

#define P9_SETATTR_ATIME_SET   0x00000080UL

◆ P9_SETATTR_CTIME

#define P9_SETATTR_CTIME   0x00000040UL

◆ P9_SETATTR_GID

#define P9_SETATTR_GID   0x00000004UL

◆ P9_SETATTR_MODE

#define P9_SETATTR_MODE   0x00000001UL

◆ P9_SETATTR_MTIME

#define P9_SETATTR_MTIME   0x00000020UL

◆ P9_SETATTR_MTIME_SET

#define P9_SETATTR_MTIME_SET   0x00000100UL

◆ P9_SETATTR_SIZE

#define P9_SETATTR_SIZE   0x00000008UL

◆ P9_SETATTR_UID

#define P9_SETATTR_UID   0x00000002UL

◆ V9FS_MAGIC

#define V9FS_MAGIC   0x01021997

Enumeration Type Documentation

◆ plan9_dotl_message_types

Enumerator
Rlerror 
Tstatfs 
Rstatfs 
Tlopen 
Rlopen 
Tlcreate 
Rlcreate 
Tsymlink 
Rsymlink 
Tmknod 
Rmknod 
Trename 
Rrename 
Treadlink 
Rreadlink 
Tgetattr 
Rgetattr 
Tsetattr 
Rsetattr 
Txattrwalk 
Rxattrwalk 
Txattrcreate 
Rxattrcreate 
Treaddir 
Rreaddir 
Tfsync 
Rfsync 
Tlock 
Rlock 
Tgetlock 
Rgetlock 
Tlink 
Rlink 
Tmkdir 
Rmkdir 
Trenameat 
Rrenameat 
Tunlinkat 
Runlinkat 

◆ plan9_message_types

Enumerator
Tversion 
Rversion 
Tauth 
Rauth 
Tattach 
Rattach 
Terror 
Rerror 
Tflush 
Rflush 
Twalk 
Rwalk 
Topen 
Ropen 
Tcreate 
Rcreate 
Tread 
Rread 
Twrite 
Rwrite 
Tclunk 
Rclunk 
Tremove 
Rremove 
Tstat 
Rstat 
Twstat 
Rwstat 

Variable Documentation

◆ p9_magic1

const unsigned char p9_magic1[] = "\0\0\0d"

◆ p9_magic12

const unsigned char p9_magic12[] = "\09P2000"