1/* 2 * Copyright 2011, Haiku, Inc. All RightsReserved. 3 * Copyright 2002-03, Thomas Kurschel. All rights reserved. 4 * Distributed under the terms of the MIT License. 5 */ 6 7 8//! Basic handling of file handles. 9 10 11#include "scsi_periph_int.h" 12 13#include <stdlib.h> 14 15#include "dl_list.h" 16 17 18status_t 19periph_handle_open(scsi_periph_device_info *device, 20 periph_handle_cookie periph_handle, scsi_periph_handle_info **res_handle) 21{ 22 scsi_periph_handle_info *handle; 23 24// SHOW_FLOW( 3, "device=%p", device ); 25 26 handle = (scsi_periph_handle_info *)malloc(sizeof(*handle)); 27 if (handle == NULL) 28 return B_NO_MEMORY; 29 30 handle->periph_handle = periph_handle; 31 handle->device = device; 32 handle->pending_error = B_OK; 33 34 mutex_lock(&device->mutex); 35 ADD_DL_LIST_HEAD(handle, device->handles, ); 36 mutex_unlock(&device->mutex); 37 38 *res_handle = handle; 39 40// SHOW_FLOW( 3, "handle=%p", handle ); 41 42 return B_OK; 43} 44 45 46status_t 47periph_handle_close(scsi_periph_handle_info *handle) 48{ 49// SHOW_FLOW( 3, "handle=%p", handle ); 50 return B_OK; 51} 52 53 54status_t 55periph_handle_free(scsi_periph_handle_info *handle) 56{ 57 scsi_periph_device_info *device = handle->device; 58 59// SHOW_FLOW( 3, "handle=%p, device=%p", handle, handle->device ); 60 61 mutex_lock(&device->mutex); 62 REMOVE_DL_LIST(handle, device->handles, ); 63 mutex_unlock(&device->mutex); 64 65 free(handle); 66 67// SHOW_FLOW0( 3, "done" ); 68 69 return B_OK; 70} 71