generic_file_write() and file holes
[akaros.git] / kern / include / kfs.h
1 /* Copyright (c) 2009, 2010 The Regents of the University of California
2  * Barret Rhoden <brho@cs.berkeley.edu>
3  * See LICENSE for details.
4  *
5  * KFS (Kernel File System)
6  *
7  * This gives runtime access to the binary blobs (usually userspace programs)
8  * linked at the end of the kernel.  Extremely rudimentary.
9  * Also allows for process creation from file (can consider moving this).
10  *
11  * Add the files you want in KFS in kfs.c. */
12
13 #ifndef ROS_KERN_KFS_H
14 #define ROS_KERN_KFS_H
15
16 #include <ros/common.h>
17 #include <vfs.h>
18 #include <process.h>
19
20 /* Every FS must extern it's type, and be included in vfs_init() */
21 extern struct fs_type kfs_fs_type;
22
23 /* KFS-specific inode info.  Could use a union, but I want to init filestart to
24  * 0 to catch bugs. */
25 struct kfs_i_info {
26         struct dentry_tailq             children;               /* our childrens */
27         void                                    *filestart;             /* or our file location */
28         size_t                                  init_size;              /* file size on the backing store */
29 };
30
31 /* Old KFS below here */
32 struct kfs_entry {
33         char (NT name)[256];
34         uint8_t *COUNT(size) start;
35         size_t size;
36 };
37
38 #define MAX_KFS_FILES 64
39 extern struct kfs_entry (RO kfs)[MAX_KFS_FILES];
40
41 ssize_t kfs_lookup_path(char*NTS path);
42 struct proc *kfs_proc_create(int kfs_inode);
43 void kfs_cat(int kfs_inode);
44
45 #endif /* !ROS_KERN_KFS_H */