02.03.2014 Views

BSP Developer's Guide

BSP Developer's Guide

BSP Developer's Guide

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

I<br />

Writing a SCSI-2 Device Driver<br />

/* Do controller-level event processing */<br />

/* If there's a thread on the controller, forward the event to it */<br />

if (pThread != 0)<br />

xxxThreadEvent (pThread, pEvent);<br />

}<br />

/***************************************************************************<br />

*<br />

* xxxThreadEvent - SCSI controller thread event processing routine<br />

*<br />

* Forward the event to the proper handler for the thread's current role.<br />

*<br />

* If the thread is still active, update the thread context (including<br />

* shared memory area) and resume the thread.<br />

*<br />

* RETURNS: N/A<br />

*/<br />

LOCAL void xxxThreadEvent<br />

(<br />

XXX_THREAD * pThread,<br />

XXX_EVENT * pEvent<br />

)<br />

{<br />

SCSI_EVENT * pScsiEvent = (SCSI_EVENT *) pEvent;<br />

SCSI_THREAD * pScsiThread = (SCSI_THREAD *) pThread;<br />

SIOP * pSiop = (SIOP *) pScsiThread->pScsiCtrl;<br />

XXX_SCRIPT_ENTRY entryPt;<br />

switch (pScsiThread->role)<br />

{<br />

case SCSI_ROLE_INITIATOR:<br />

xxxInitEvent (pThread, pEvent);<br />

entryPt = XXX_SCRIPT_INIT_CONTINUE;<br />

break;<br />

case SCSI_ROLE_IDENT_INIT:<br />

xxxInitIdentEvent (pThread, pEvent);<br />

I<br />

entryPt = XXX_SCRIPT_INIT_CONTINUE;<br />

break;<br />

case SCSI_ROLE_IDENT_TARG:<br />

xxxTargIdentEvent (pThread, pEvent);<br />

entryPt = XXX_SCRIPT_TGT_DISCONNECT;<br />

break;<br />

case SCSI_ROLE_TARGET:<br />

default:<br />

logMsg ("xxxThreadEvent: thread 0x%08x: invalid role (%d)\n",<br />

(int) pThread, pScsiThread->role, 0, 0, 0, 0);<br />

345

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!