Files
kernel/include/fs/ofile.h
T
2020-08-07 12:53:58 +03:00

43 lines
968 B
C

#pragma once
#include "node.h"
#include "net/socket.h"
#include <sys/types.h>
#define OF_WRITABLE (1 << 0)
#define OF_READABLE (1 << 1)
#define OF_DIRECTORY (1 << 2)
#define OF_MEMDIR (1 << 3)
#define OF_MEMDIR_DOT (1 << 4)
#define OF_MEMDIR_DOTDOT (1 << 5)
#define OF_CLOEXEC (1 << 7)
struct vfs_ioctx;
struct ofile {
int flags;
int refcount;
union {
struct {
struct vnode *vnode;
size_t pos;
void *priv_data;
} file;
struct socket socket;
};
};
#if defined(ENABLE_NET)
#define OF_SOCKET (1 << 6)
static inline int ofile_is_socket(struct ofile *of) {
return !!(of->flags & OF_SOCKET);
}
#else
#define ofile_is_socket(of) 0
#endif
struct ofile *ofile_create(void);
struct ofile *ofile_dup(struct ofile *of);
void ofile_destroy(struct ofile *of);
void ofile_close(struct vfs_ioctx *ctx, struct ofile *of);