/* Copyright (c) 2010 The Regents of the University of California
 * Barret Rhoden <brho@cs.berkeley.edu>
 * See LICENSE for details.
 *
 * Devfs: filesystem interfaces to devices.  For now, we just create the
 * needed/discovered devices in KFS in its /dev/ folder.  In the future, we
 * might want to do something like nodes like other Unixes. */

#ifndef ROS_KERN_DEVFS_H
#define ROS_KERN_DEVFS_H

#include <vfs.h>
#include <kfs.h>

void devfs_init(void);
struct file *make_device(char *path, int mode, int type,
                         struct file_operations *fop);

/* Generic device (block or char) file ops.  Both of these are dummies that say
 * the device can't support the operation. */
int dev_mmap(struct file *file, struct vm_region *vmr);
int dev_c_llseek(struct file *file, off64_t offset, off64_t *ret, int whence);

/* Exporting these for convenience (process creation) */
extern struct file *dev_stdin, *dev_stdout, *dev_stderr;

#endif /* !ROS_KERN_DEVFS_H */
