summaryrefslogtreecommitdiff
path: root/src/sys/include/os/filedesc.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/sys/include/os/filedesc.h')
-rw-r--r--src/sys/include/os/filedesc.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/sys/include/os/filedesc.h b/src/sys/include/os/filedesc.h
index a6a2ac5..95400ed 100644
--- a/src/sys/include/os/filedesc.h
+++ b/src/sys/include/os/filedesc.h
@@ -30,6 +30,7 @@
#ifndef _OS_FILEDESC_H_
#define _OS_FILEDESC_H_ 1
+#include <sys/seek.h>
#include <sys/types.h>
#include <os/vnode.h>
@@ -51,6 +52,18 @@ struct filedesc {
};
/*
+ * Allocate a file descriptor from a specific process's
+ * file descriptor table
+ *
+ * @procp: Process to allocate fd from
+ * @fd_res: Result pointer is written here
+ *
+ * Returns zero on success, otherwise a less than
+ * zero value upon failure
+ */
+int fd_alloc(struct proc *procp, struct filedesc **fd_res);
+
+/*
* Duplicate a file descriptor
*
* @procp: Process to duplicate from
@@ -62,6 +75,18 @@ struct filedesc {
struct filedesc *fd_dup(struct proc *procp, int fd);
/*
+ * Look up a file descriptor that belongs to a specific
+ * process by using its fd number
+ *
+ * @procp: Process to look up
+ * @fd: File descriptor number
+ *
+ * Returns the file descriptor pointer on success,
+ * otherwise a less than zero value on failure
+ */
+struct filedesc *fd_get(struct proc *procp, int fd);
+
+/*
* Initialize a process file descriptor table
* and set up standard streams
*
@@ -117,4 +142,13 @@ ssize_t write(int fd, const void *buf, size_t count);
*/
ssize_t read(int fd, void *buf, size_t count);
+/*
+ * Reposition the file offset of a file
+ *
+ * @fd: File descriptor to reposition
+ * @offset: Offset to move `fd' to
+ * @whence: How it should be repositioned
+ */
+off_t lseek(int fd, off_t offset, int whence);
+
#endif /* !_OS_FILEDESC_H_ */