diff options
Diffstat (limited to 'device/dev_pager.c')
-rw-r--r-- | device/dev_pager.c | 167 |
1 files changed, 74 insertions, 93 deletions
diff --git a/device/dev_pager.c b/device/dev_pager.c index e0ca2c76..815473a9 100644 --- a/device/dev_pager.c +++ b/device/dev_pager.c @@ -55,9 +55,8 @@ #include <device/dev_hdr.h> #include <device/io_req.h> #include <device/memory_object_reply.user.h> - -extern vm_offset_t block_io_mmap(); /* dummy routine to allow - mmap for block devices */ +#include <device/dev_pager.h> +#include <device/blkio.h> /* * The device pager routines are called directly from the message @@ -127,14 +126,14 @@ typedef struct dev_pager *dev_pager_t; struct kmem_cache dev_pager_cache; -void dev_pager_reference(register dev_pager_t ds) +void dev_pager_reference(dev_pager_t ds) { simple_lock(&ds->lock); ds->ref_count++; simple_unlock(&ds->lock); } -void dev_pager_deallocate(register dev_pager_t ds) +void dev_pager_deallocate(dev_pager_t ds) { simple_lock(&ds->lock); if (--ds->ref_count > 0) { @@ -169,8 +168,8 @@ decl_simple_lock_data(, void dev_pager_hash_init(void) { - register int i; - register vm_size_t size; + int i; + vm_size_t size; size = sizeof(struct dev_pager_entry); kmem_cache_init(&dev_pager_hash_cache, "dev_pager_entry", size, 0, @@ -181,10 +180,10 @@ void dev_pager_hash_init(void) } void dev_pager_hash_insert( - ipc_port_t name_port, - dev_pager_t rec) + const ipc_port_t name_port, + const dev_pager_t rec) { - register dev_pager_entry_t new_entry; + dev_pager_entry_t new_entry; new_entry = (dev_pager_entry_t) kmem_cache_alloc(&dev_pager_hash_cache); new_entry->name = name_port; @@ -196,10 +195,10 @@ void dev_pager_hash_insert( simple_unlock(&dev_pager_hash_lock); } -void dev_pager_hash_delete(ipc_port_t name_port) +void dev_pager_hash_delete(const ipc_port_t name_port) { - register queue_t bucket; - register dev_pager_entry_t entry; + queue_t bucket; + dev_pager_entry_t entry; bucket = &dev_pager_hashtable[dev_pager_hash(name_port)]; @@ -217,11 +216,11 @@ void dev_pager_hash_delete(ipc_port_t name_port) kmem_cache_free(&dev_pager_hash_cache, (vm_offset_t)entry); } -dev_pager_t dev_pager_hash_lookup(ipc_port_t name_port) +dev_pager_t dev_pager_hash_lookup(const ipc_port_t name_port) { - register queue_t bucket; - register dev_pager_entry_t entry; - register dev_pager_t pager; + queue_t bucket; + dev_pager_entry_t entry; + dev_pager_t pager; bucket = &dev_pager_hashtable[dev_pager_hash(name_port)]; @@ -241,13 +240,13 @@ dev_pager_t dev_pager_hash_lookup(ipc_port_t name_port) } kern_return_t device_pager_setup( - mach_device_t device, - int prot, - vm_offset_t offset, - vm_size_t size, - mach_port_t *pager) + const mach_device_t device, + int prot, + vm_offset_t offset, + vm_size_t size, + mach_port_t *pager) { - register dev_pager_t d; + dev_pager_t d; /* * Verify the device is indeed mappable @@ -318,28 +317,20 @@ void device_pager_release(memory_object_t object) boolean_t device_pager_debug = FALSE; -boolean_t device_pager_data_request_done(); /* forward */ -boolean_t device_pager_data_write_done(); /* forward */ - - kern_return_t device_pager_data_request( - ipc_port_t pager, - ipc_port_t pager_request, - vm_offset_t offset, - vm_size_t length, - vm_prot_t protection_required) + const ipc_port_t pager, + const ipc_port_t pager_request, + vm_offset_t offset, + vm_size_t length, + vm_prot_t protection_required) { - register dev_pager_t ds; - -#ifdef lint - protection_required++; -#endif /* lint */ + dev_pager_t ds; if (device_pager_debug) printf("(device_pager)data_request: pager=%p, offset=0x%lx, length=0x%x\n", pager, offset, length); - ds = dev_pager_hash_lookup((ipc_port_t)pager); + ds = dev_pager_hash_lookup(pager); if (ds == DEV_PAGER_NULL) panic("(device_pager)data_request: lookup failed"); @@ -347,8 +338,7 @@ kern_return_t device_pager_data_request( panic("(device_pager)data_request: bad pager_request"); if (ds->type == CHAR_PAGER_TYPE) { - register vm_object_t object; - vm_offset_t device_map_page(void *,vm_offset_t); + vm_object_t object; object = vm_object_lookup(pager_request); if (object == VM_OBJECT_NULL) { @@ -361,13 +351,13 @@ kern_return_t device_pager_data_request( vm_object_page_map(object, offset, length, - device_map_page, (char *)ds); + device_map_page, (void *)ds); vm_object_deallocate(object); } else { - register io_req_t ior; - register mach_device_t device; + io_req_t ior; + mach_device_t device; io_return_t result; panic("(device_pager)data_request: dev pager"); @@ -415,7 +405,7 @@ kern_return_t device_pager_data_request( /* * Always called by io_done thread. */ -boolean_t device_pager_data_request_done(register io_req_t ior) +boolean_t device_pager_data_request_done(io_req_t ior) { vm_offset_t start_alloc, end_alloc; vm_size_t size_read; @@ -424,15 +414,15 @@ boolean_t device_pager_data_request_done(register io_req_t ior) size_read = ior->io_count; if (ior->io_residual) { if (device_pager_debug) - printf("(device_pager)data_request_done: r: 0x%lx\n",ior->io_residual); + printf("(device_pager)data_request_done: r: 0x%lx\n", ior->io_residual); memset((&ior->io_data[ior->io_count - ior->io_residual]), 0, - (unsigned) ior->io_residual); + (size_t) ior->io_residual); } } else { size_read = ior->io_count - ior->io_residual; } - start_alloc = trunc_page((vm_offset_t)ior->io_data); + start_alloc = trunc_page(ior->io_data); end_alloc = start_alloc + round_page(ior->io_alloc_size); if (ior->io_error == D_SUCCESS) { @@ -467,20 +457,20 @@ boolean_t device_pager_data_request_done(register io_req_t ior) } kern_return_t device_pager_data_write( - ipc_port_t pager, - ipc_port_t pager_request, - register vm_offset_t offset, - register pointer_t addr, + const ipc_port_t pager, + const ipc_port_t pager_request, + vm_offset_t offset, + pointer_t addr, vm_size_t data_count) { - register dev_pager_t ds; - register mach_device_t device; - register io_req_t ior; + dev_pager_t ds; + mach_device_t device; + io_req_t ior; kern_return_t result; panic("(device_pager)data_write: called"); - ds = dev_pager_hash_lookup((ipc_port_t)pager); + ds = dev_pager_hash_lookup(pager); if (ds == DEV_PAGER_NULL) panic("(device_pager)data_write: lookup failed"); @@ -523,8 +513,7 @@ kern_return_t device_pager_data_write( return (KERN_SUCCESS); } -boolean_t device_pager_data_write_done(ior) - register io_req_t ior; +boolean_t device_pager_data_write_done(io_req_t ior) { device_write_dealloc(ior); mach_device_deallocate(ior->io_device); @@ -533,19 +522,19 @@ boolean_t device_pager_data_write_done(ior) } kern_return_t device_pager_copy( - ipc_port_t pager, - ipc_port_t pager_request, - register vm_offset_t offset, - register vm_size_t length, - ipc_port_t new_pager) + const ipc_port_t pager, + const ipc_port_t pager_request, + vm_offset_t offset, + vm_size_t length, + const ipc_port_t new_pager) { panic("(device_pager)copy: called"); } kern_return_t device_pager_supply_completed( - ipc_port_t pager, - ipc_port_t pager_request, + const ipc_port_t pager, + const ipc_port_t pager_request, vm_offset_t offset, vm_size_t length, kern_return_t result, @@ -556,10 +545,10 @@ device_pager_supply_completed( kern_return_t device_pager_data_return( - ipc_port_t pager, - ipc_port_t pager_request, + const ipc_port_t pager, + const ipc_port_t pager_request, vm_offset_t offset, - register pointer_t addr, + pointer_t addr, vm_size_t data_cnt, boolean_t dirty, boolean_t kernel_copy) @@ -569,7 +558,7 @@ device_pager_data_return( kern_return_t device_pager_change_completed( - ipc_port_t pager, + const ipc_port_t pager, boolean_t may_cache, memory_object_copy_strategy_t copy_strategy) { @@ -586,7 +575,7 @@ vm_offset_t device_map_page( void *dsp, vm_offset_t offset) { - register dev_pager_t ds = (dev_pager_t) dsp; + dev_pager_t ds = (dev_pager_t) dsp; return pmap_phys_address( (*(ds->device->dev_ops->d_mmap)) @@ -594,12 +583,12 @@ vm_offset_t device_map_page( } kern_return_t device_pager_init_pager( - ipc_port_t pager, - ipc_port_t pager_request, - ipc_port_t pager_name, - vm_size_t pager_page_size) + const ipc_port_t pager, + const ipc_port_t pager_request, + const ipc_port_t pager_name, + vm_size_t pager_page_size) { - register dev_pager_t ds; + dev_pager_t ds; if (device_pager_debug) printf("(device_pager)init: pager=%p, request=%p, name=%p\n", @@ -645,11 +634,11 @@ kern_return_t device_pager_init_pager( } kern_return_t device_pager_terminate( - ipc_port_t pager, - ipc_port_t pager_request, - ipc_port_t pager_name) + const ipc_port_t pager, + const ipc_port_t pager_request, + const ipc_port_t pager_name) { - register dev_pager_t ds; + dev_pager_t ds; assert(IP_VALID(pager_request)); assert(IP_VALID(pager_name)); @@ -687,37 +676,29 @@ kern_return_t device_pager_terminate( } kern_return_t device_pager_data_unlock( - ipc_port_t memory_object, - ipc_port_t memory_control_port, + const ipc_port_t memory_object, + const ipc_port_t memory_control_port, vm_offset_t offset, vm_size_t length, vm_prot_t desired_access) { -#ifdef lint - memory_object++; memory_control_port++; offset++; length++; desired_access++; -#endif /* lint */ - panic("(device_pager)data_unlock: called"); return (KERN_FAILURE); } kern_return_t device_pager_lock_completed( - ipc_port_t memory_object, - ipc_port_t pager_request_port, - vm_offset_t offset, - vm_size_t length) + const ipc_port_t memory_object, + const ipc_port_t pager_request_port, + vm_offset_t offset, + vm_size_t length) { -#ifdef lint - memory_object++; pager_request_port++; offset++; length++; -#endif /* lint */ - panic("(device_pager)lock_completed: called"); return (KERN_FAILURE); } void device_pager_init(void) { - register vm_size_t size; + vm_size_t size; /* * Initialize cache of paging structures. |