gio_cbck.c
上传用户:dahaojd
上传日期:2008-01-29
资源大小:14357k
文件大小:1k
源码类别:

DSP编程

开发平台:

C/C++

  1. /*
  2.  *  Copyright 2003 by Texas Instruments Incorporated.
  3.  *  All rights reserved. Property of Texas Instruments Incorporated.
  4.  *  Restricted rights to use, duplicate or disclose this code are
  5.  *  granted through contract.
  6.  *  
  7.  */
  8. /* "@(#) DDK 1.11.00.00 11-04-03 (ddk-b13)" */
  9. /*
  10.  *  ======== gio_cbck.c ========
  11.  *
  12.  */
  13. #include <std.h>
  14. #include <gio.h>
  15. #include <iom.h>
  16. #include <que.h>
  17. #include <_gio.h>
  18. /*
  19.  *  ======== _GIO_iomCallback ========
  20.  *  This function is called by the mini-driver when I/O completes.
  21.  */
  22. Void _GIO_iomCallback(Ptr cbArg, IOM_Packet *packet)
  23. {
  24.     GIO_Handle          gioChan = (GIO_Handle)cbArg;
  25.     GIO_AppCallback     *appCallback = (GIO_AppCallback *)packet->misc;
  26.     Int                 status;
  27.     Ptr                 addr;
  28.     Uns                 size;
  29.  
  30.     if (appCallback == NULL) {
  31.         /* this was a synchronous call -- post semaphore (or alternate sync) */
  32.         GIO->SEMPOST(gioChan->syncObj);
  33.     }
  34.     else {
  35.         status = packet->status;
  36.         addr = packet->addr;
  37.         size = packet->size;
  38.         
  39.         /* recycle packet back onto free list */
  40.         QUE_put(&gioChan->freeList, packet);
  41.         /* callback into application with status and size */
  42.         (*appCallback->fxn)(appCallback->arg, status, addr, size);
  43.     }
  44. }