Ignore:
Timestamp:
Sep 20, 2000, 11:32:58 PM (25 years ago)
Author:
hugh
Message:

Implemented Serial APIs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/hmdevio.cpp

    r3005 r4285  
    1 /* $Id: hmdevio.cpp,v 1.4 2000-03-04 19:52:36 sandervl Exp $ */
     1/* $Id: hmdevio.cpp,v 1.5 2000-09-20 21:32:52 hugh Exp $ */
    22
    33/*
     
    1818#define INCL_DOSPROCESS          /* DOS Process values       */
    1919#define INCL_DOSMISC             /* DOS Miscellanous values  */
    20 #include <os2wrap.h>    //Odin32 OS/2 api wrappers
     20#include <os2wrap.h>  //Odin32 OS/2 api wrappers
    2121#include <string.h>
    2222
     
    2828#include "exceptutil.h"
    2929
    30 #define DBG_LOCALLOG    DBG_hmdevio
     30#define DBG_LOCALLOG  DBG_hmdevio
    3131#include "dbglocal.h"
    3232
    3333static fX86Init  = FALSE;
    3434//SvL: Used in iccio.asm (how can you put these in the .asm data segment without messing things up?)
    35 ULONG  ioentry   = 0;
    36 USHORT gdt       = 0;
     35//ULONG  ioentry   = 0;
     36//USHORT gdt       = 0;
    3737char   devname[] = "/dev/fastio$";
    3838
     
    4242
    4343static WIN32DRV knownDriver[] =
    44     {{"\\\\.\\GpdDev", "",      TRUE,  666,   GpdDevIOCtl},
     44    {{"\\\\.\\GpdDev", "/dev/fastio$", TRUE,  666,   GpdDevIOCtl},
    4545    { "\\\\.\\MAPMEM", "PMAP$", FALSE, 0,     MAPMEMIOCtl},
    4646    { "FXMEMMAP.VXD",  "PMAP$", FALSE, 0,     FXMEMMAPIOCtl}};
     
    5555 DWORD rc;
    5656
    57     for(int i=0;i<nrKnownDrivers;i++) 
     57    for(int i=0;i<nrKnownDrivers;i++)
    5858    {
    59         driver = new HMDeviceDriver(knownDriver[i].szWin32Name,
     59  driver = new HMDeviceDriver(knownDriver[i].szWin32Name,
    6060                                    knownDriver[i].szOS2Name,
    6161                                    knownDriver[i].fCreateFile,
    6262                                    knownDriver[i].devIOCtl);
    6363
    64         rc = HMDeviceRegister(knownDriver[i].szWin32Name, driver);
    65         if (rc != NO_ERROR)                                  /* check for errors */
    66                 dprintf(("KERNEL32:RegisterDevices: registering %s failed with %u.\n",
    67                           knownDriver[i].szWin32Name, rc));
     64  rc = HMDeviceRegister(knownDriver[i].szWin32Name, driver);
     65      if (rc != NO_ERROR)                                  /* check for errors */
     66          dprintf(("KERNEL32:RegisterDevices: registering %s failed with %u.\n",
     67                    knownDriver[i].szWin32Name, rc));
    6868    }
    6969    return;
     
    7171//******************************************************************************
    7272//******************************************************************************
    73 HMDeviceDriver::HMDeviceDriver(LPCSTR lpDeviceName, LPSTR lpOS2DevName, BOOL fCreate, 
     73HMDeviceDriver::HMDeviceDriver(LPCSTR lpDeviceName, LPSTR lpOS2DevName, BOOL fCreate,
    7474                               WINIOCTL pDevIOCtl)
    7575                : HMDeviceKernelObjectClass(lpDeviceName)
     
    110110
    111111  if(szOS2Name[0] == 0) {
    112         pHMHandleData->hHMHandle = 0;
    113         return (NO_ERROR);
     112      pHMHandleData->hHMHandle = 0;
     113      return (NO_ERROR);
    114114  }
    115115
    116116tryopen:
    117   rc = DosOpen( szOS2Name,                        /* File path name */
    118                 &hfFileHandle,                  /* File handle */
    119                 &ulAction,                      /* Action taken */
    120                 0,
    121                 FILE_NORMAL,
    122                 FILE_OPEN,
    123                 sharetype,
    124                 0L);                            /* No extended attribute */
     117  rc = DosOpen( szOS2Name,                        /* File path name */
     118                &hfFileHandle,                  /* File handle */
     119                &ulAction,                      /* Action taken */
     120          0,
     121          FILE_NORMAL,
     122            FILE_OPEN,
     123            sharetype,
     124                0L);                            /* No extended attribute */
    125125
    126126  if(rc == ERROR_TOO_MANY_OPEN_FILES) {
     
    128128   LONG  ReqCount = 32;
    129129
    130         rc = DosSetRelMaxFH(&ReqCount, &CurMaxFH);
    131         if(rc) {
    132                 dprintf(("DosSetRelMaxFH returned %d", rc));
    133                 return rc;
    134         }
    135         dprintf(("DosOpen failed -> increased nr open files to %d", CurMaxFH));
    136         goto tryopen;
     130  rc = DosSetRelMaxFH(&ReqCount, &CurMaxFH);
     131  if(rc) {
     132    dprintf(("DosSetRelMaxFH returned %d", rc));
     133    return rc;
     134  }
     135  dprintf(("DosOpen failed -> increased nr open files to %d", CurMaxFH));
     136  goto tryopen;
    137137  }
    138138
    139139  dprintf(("DosOpen %s returned %d\n", szOS2Name, rc));
    140140
    141   if(rc == NO_ERROR) {
    142         pHMHandleData->hHMHandle = hfFileHandle;
    143         return (NO_ERROR);
    144   }
    145   else  return(rc);
     141  if(rc == NO_ERROR)
     142  {
     143    pHMHandleData->hHMHandle = hfFileHandle;
     144    return (NO_ERROR);
     145  }
     146  else
     147    return(rc);
    146148}
    147149//******************************************************************************
     
    166168{
    167169 ULONG port, val = 0;
    168 
    169   if(fX86Init == FALSE) {
    170         if(io_init() == 0)
    171                 fX86Init = TRUE;
    172         else    return(FALSE);
     170 WORD  gdt;
     171 HRESULT rc;
     172 ULONG ulAction;
     173
     174  if(fX86Init == FALSE)
     175  {
     176    rc = DosDevIOCtl( hDevice, 118, 100, 0,0,0,&gdt,2,&ulAction);
     177
     178    if(rc)
     179      return FALSE;
     180
     181    io_init2(gdt);
     182
     183    fX86Init = TRUE;
    173184  }
    174185
     
    298309  rc = DosTmrQueryTime(&time);
    299310  if(rc) {
    300         dprintf(("DosTmrQueryTime returned %d\n", rc));
    301         return(FALSE);
     311      dprintf(("DosTmrQueryTime returned %d\n", rc));
     312      return(FALSE);
    302313  }
    303314  lpPerformanceCount->u.LowPart  = time.ulLo;
     
    314325  rc = DosTmrQueryFreq(&freq);
    315326  if(rc) {
    316         dprintf(("DosTmrQueryFreq returned %d\n", rc));
    317         return(FALSE);
     327      dprintf(("DosTmrQueryFreq returned %d\n", rc));
     328      return(FALSE);
    318329  }
    319330  lpFrequency->u.LowPart  = freq;
Note: See TracChangeset for help on using the changeset viewer.