1// userlandfs_ioctl.h 2 3#ifndef USERLAND_FS_IOCTL_H 4#define USERLAND_FS_IOCTL_H 5 6#include <Drivers.h> 7 8// the ioctl command we use for tunnelling our commands 9enum { 10 USERLANDFS_IOCTL = B_DEVICE_OP_CODES_END + 666, 11}; 12 13// the supported commands 14enum { 15 USERLAND_IOCTL_PUT_ALL_PENDING_VNODES = 1, 16}; 17 18// the length of the magic we use 19enum { 20 USERLAND_IOCTL_MAGIC_LENGTH = 20, 21}; 22 23// the version of the ioctl protocol 24enum { 25 USERLAND_IOCTL_CURRENT_VERSION = 1, 26}; 27 28// the errors 29enum { 30 USERLAND_IOCTL_STILL_CONNECTED = B_ERRORS_END + 666, 31 USERLAND_IOCTL_VNODE_COUNTING_DISABLED, 32 USERLAND_IOCTL_OPEN_FILES, 33 USERLAND_IOCTL_OPEN_DIRECTORIES, 34 USERLAND_IOCTL_OPEN_ATTRIBUTE_DIRECTORIES, 35 USERLAND_IOCTL_OPEN_ATTRIBUTES, 36 USERLAND_IOCTL_OPEN_INDEX_DIRECTORIES, 37 USERLAND_IOCTL_OPEN_QUERIES, 38}; 39 40namespace UserlandFSUtil { 41 42struct userlandfs_ioctl { 43 char magic[USERLAND_IOCTL_MAGIC_LENGTH]; 44 int version; 45 int command; 46 status_t error; 47}; 48 49extern const char kUserlandFSIOCtlMagic[USERLAND_IOCTL_MAGIC_LENGTH]; 50 51} // namespace UserlandFSUtil 52 53using UserlandFSUtil::userlandfs_ioctl; 54using UserlandFSUtil::kUserlandFSIOCtlMagic; 55 56#endif // USERLAND_FS_IOCTL_H 57