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