home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / misc / amigem.lha / amigem / expansion / configdev.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-01-29  |  1.8 KB  |  64 lines

  1. #include <clib/_exec.h>
  2. #include <amigem/utils.h>
  3. #include "expansion.h"
  4.  
  5. #include <amigem/fd_lib.h>
  6. #define LIBBASE struct ExpansionBase *ExpansionBase
  7.  
  8. #define SysBase (ExpansionBase->SysBase)
  9.  
  10. FD1(5,void,AddConfigDev,struct ConfigDev *configDev,A0)
  11. {
  12.   Forbid();
  13.     AddTail(&ExpansionBase->ConfigDevList,&configDev->cd_Node);
  14.   Permit();
  15. }
  16.  
  17. FD0(8,struct ConfigDev *,AllocConfigDev)
  18. {
  19.   return (struct ConfigDev *)AllocMem(sizeof(struct ConfigDev),MEMF_PUBLIC|MEMF_CLEAR);
  20. }
  21.  
  22. FD3(12,struct ConfigDev *,FindConfigDev,struct ConfigDev *oldConfigDev,A0,LONG manufacturer,D0,LONG product,D1)
  23. {/* No need to arbitrate for this list: ln_Succ always points to a valid node */
  24.   if(oldConfigDev==NULL)
  25.     oldConfigDev=(struct ConfigDev *)&ExpansionBase->ConfigDevList;
  26.   for(;;)
  27.   {
  28.     oldConfigDev=(struct ConfigDev *)oldConfigDev->cd_Node.ln_Succ;
  29.     if(!oldConfigDev->cd_Node.ln_Succ)
  30.       return NULL;
  31.     if((manufacturer==-1||manufacturer==oldConfigDev->cd_Rom.er_Manufacturer)&&
  32.        (product     ==-1||product     ==oldConfigDev->cd_Rom.er_Product     ))
  33.       return oldConfigDev;
  34.   }
  35. }
  36.  
  37. FD1(14,void,FreeConfigDev,struct ConfigDev *configDev,A0)
  38. {
  39.   FreeMem(configDev,sizeof(struct ConfigDev));
  40. }
  41.  
  42. FD2(22,void,SetCurrentBinding,struct CurrentBinding *currentBinding,A0,ULONG size,D0)
  43. {
  44.   CopyMem(currentBinding,&ExpansionBase->LocalCurBind,size);
  45.   while(size<sizeof(struct CurrentBinding))
  46.     ((UBYTE *)&ExpansionBase->LocalCurBind)[size++]=0;
  47. }
  48.  
  49. FD2(23,ULONG,GetCurrentBinding,struct CurrentBinding *currentBinding,A0,ULONG size,D0)
  50. {
  51.   CopyMem(&ExpansionBase->LocalCurBind,currentBinding,size);
  52.   return sizeof(struct CurrentBinding);
  53. }
  54.  
  55. FD0(20,void,ObtainConfigBinding)
  56. {
  57.   ObtainSemaphore(&ExpansionBase->ConfigBinding);
  58. }
  59.  
  60. FD0(21,void,ReleaseConfigBinding)
  61. {
  62.   ReleaseSemaphore(&ExpansionBase->ConfigBinding);
  63. }
  64.