summaryrefslogtreecommitdiff
path: root/devio/dev.h
diff options
context:
space:
mode:
Diffstat (limited to 'devio/dev.h')
-rw-r--r--devio/dev.h147
1 files changed, 0 insertions, 147 deletions
diff --git a/devio/dev.h b/devio/dev.h
deleted file mode 100644
index de51d788..00000000
--- a/devio/dev.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/* A handle on a mach device.
-
- Copyright (C) 1995 Free Software Foundation, Inc.
-
- Written by Miles Bader <miles@gnu.ai.mit.edu>
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2, or (at
- your option) any later version.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-#ifndef __DEV_H__
-#define __DEV_H__
-
-#include <mach.h>
-#include <device/device.h>
-
-#include "iostate.h"
-
-/* #define FAKE */
-#define MSG
-
-#ifdef MSG
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-extern FILE *debug;
-extern struct mutex debug_lock;
-#endif
-
-/* ---------------------------------------------------------------- */
-
-/* Information about a kernel device. */
-struct dev
-{
- /* The device port for the kernel device we're doing paging on. */
- device_t port;
- /* The mach device name which we opened. */
- char *name;
-
- /* The total size of DEV. */
- vm_size_t size;
-
- /* The block size of DEV. I/O to DEV must occur in multiples of
- block_size. */
- int dev_block_size;
- /* The block size in which we will do I/O; this must be a multiple of
- DEV_BLOCK_SIZE. */
- int block_size;
-
- /* Various attributes of this device (see below for the DEV_ flag bits).
- This field is constant. */
- int flags;
-
- /* Current state of our output stream -- location and the buffer used to do
- buffered i/o. */
- struct io_state io_state;
-
- /* The pager we're using to do disk i/o for us. If NULL, a pager hasn't
- been allocated yet. Lock the lock in IO_STATE if you want to update
- this field. */
- struct pager *pager;
- /* The port_bucket for paging ports. */
- struct port_bucket *pager_port_bucket;
-
- /* The current owner of the open device. For terminals, this affects
- controlling terminal behavior (see term_become_ctty). For all objects
- this affects old-style async IO. Negative values represent pgrps. This
- has nothing to do with the owner of a file (as returned by io_stat, and
- as used for various permission checks by filesystems). An owner of 0
- indicates that there is no owner. */
- pid_t owner;
-};
-
-/* Various bits to be set in the flags field. */
-
-/* True if this device should be used in `block' mode, with buffering of
- sub-block-size i/o. */
-#define DEV_BUFFERED 0x1
-/* True if this device only supports serial i/o (that is, there's only one
- read/write location, which must explicitly be moved to do i/o elsewhere.*/
-#define DEV_SERIAL 0x2
-/* True if we can change the current i/o location of a serial device. */
-#define DEV_SEEKABLE 0x4
-/* True if a device cannot be written on. */
-#define DEV_READONLY 0x8
-
-/* Returns TRUE if any of the flags in BITS are set for DEV. */
-#define dev_is(dev, bits) ((dev)->flags & (bits))
-
-/* Returns true if it's ok to call dev_write on these arguments, without
- first copying BUF to a page-aligned buffer. */
-#define dev_write_valid(dev, buf, len, offs) \
- ((len) <= IO_INBAND_MAX || (buf) % vm_page_size == 0)
-
-/* Returns a pointer to a new device structure in DEV for the kernel device
- NAME, with the given FLAGS. If BLOCK_SIZE is non-zero, it should be the
- desired block size, and must be a multiple of the device block size.
- If an error occurs, the error code is returned, otherwise 0. */
-error_t dev_open(char *name, int flags, int block_size, struct dev **dev);
-
-/* Free DEV and any resources it consumes. */
-void dev_close(struct dev *dev);
-
-/* Reads AMOUNT bytes from DEV and returns it in BUF and BUF_LEN (using the
- standard mach out-array convention). *OFFS is incremented to reflect the
- amount read/written. Both LEN and *OFFS must be multiples of DEV's block
- size. If an error occurs, the error code is returned, otherwise 0. */
-error_t dev_read(struct dev *dev,
- vm_address_t *buf, vm_size_t *buf_len, vm_size_t amount,
- vm_offset_t *offs);
-
-/* Writes AMOUNT bytes from the buffer pointed to by BUF to the device DEV.
- *OFFS is incremented to reflect the amount read/written. Both AMOUNT and
- *OFFS must be multiples of DEV's block size, and either BUF must be
- page-aligned, or dev_write_valid() must return true for these arguments.
- If an error occurs, the error code is returned, otherwise 0. */
-error_t dev_write(struct dev *dev,
- vm_address_t buf, vm_size_t amount, vm_offset_t *offs);
-
-/* Returns in MEMOBJ the port for a memory object backed by the storage on
- DEV. Returns 0 or the error code if an error occurred. */
-error_t dev_get_memory_object(struct dev *dev, memory_object_t *memobj);
-
-/* Try to stop all paging activity on DEV, returning true if we were
- successful. If NOSYNC is true, then we won't write back any (kernel)
- cached pages to the device. */
-int dev_stop_paging (struct dev *dev, int nosync);
-
-/* Try and write out any pending writes to DEV. If WAIT is true, will wait
- for any paging activity to cease. */
-error_t dev_sync(struct dev *dev, int wait);
-
-#ifdef MSG
-char *brep(vm_address_t buf, vm_size_t len);
-#endif
-
-#endif /* !__DEV_H__ */