示例#1
0
static
void mts_remove_nolock( struct mts_desc* to_remove )
{
	MTS_DEBUG( "removing 0x%x from list\n",
		   (int)to_remove );

	lock_kernel();
	mts_urb_abort(to_remove);

	MTS_DEBUG_GOT_HERE();

	if ( to_remove != mts_list ) {
		MTS_DEBUG_GOT_HERE();
		if (to_remove->prev && to_remove->next)
			to_remove->prev->next = to_remove->next;
	} else {
		MTS_DEBUG_GOT_HERE();
		mts_list = to_remove->next;
		if (mts_list) {
			MTS_DEBUG_GOT_HERE();
			mts_list->prev = 0;
		}
	}

	if ( to_remove->next ) {
		MTS_DEBUG_GOT_HERE();
		to_remove->next->prev = to_remove->prev;
	}

	MTS_DEBUG_GOT_HERE();
	scsi_unregister_host(&to_remove->ctempl);
	unlock_kernel();

	kfree( to_remove );
}
示例#2
0
static int mts_scsi_abort (Scsi_Cmnd *srb)
{
	struct mts_desc* desc = (struct mts_desc*)(srb->host->hostdata[0]);

	MTS_DEBUG_GOT_HERE();

	mts_urb_abort(desc);

	return SCSI_ABORT_PENDING;
}
示例#3
0
static int mts_scsi_abort (Scsi_Cmnd *srb)
{
	struct mts_desc* desc = (struct mts_desc*)(srb->device->host->hostdata[0]);

	MTS_DEBUG_GOT_HERE();

	mts_urb_abort(desc);

	return FAILED;
}
示例#4
0
文件: microtek.c 项目: davidbau/davej
static int mts_scsi_abort (Scsi_Cmnd *srb)
/* interrupt context (!) */ /* FIXME this is about to become task context */
{
	struct mts_desc* desc = (struct mts_desc*)(srb->host->hostdata[0]);

	MTS_DEBUG_GOT_HERE();
	
	mts_request_abort(desc);
	mts_urb_abort(desc);
	
	return SCSI_ABORT_PENDING;
}
示例#5
0
static inline void mts_wait_abort(struct mts_desc* desc)
{
	mts_request_abort(desc);

	while( !atomic_read(&desc->lock.count) ) {
/* Is there a function to check if the semaphore is locked? */
		schedule_timeout( MTS_ABORT_TIMEOUT ); 
		MTS_DEBUG_GOT_HERE();
		mts_urb_abort(desc);
	}

}