Implemented some more APIs.
This is enough to survive emx.dll intialization and a printf("hello world")
mainline, but note that we need to properly implement DosQueryHType()
before EMX's printf() will work, though (as it currently thinks stdout isn't
open), so we're not quite through a proper C Hello World test yet.
This commit is contained in:
1 parent
8a6c7fef87
commit
71653286cd
3 files changed
+66
-15
No files matched your search
+60
-14
@@ -365,21 +365,67 @@ APIRET DosSetSignalExceptionFocus(BOOL32 flag, PULONG pulTimes)
|
||||
return NO_ERROR;
|
||||
} // DosSetSignalExceptionFocus
|
||||
|
||||
APIRET DosSetRelMaxFH(PLONG incr, PULONG pcurrent)
|
||||
{
|
||||
TRACE_NATIVE("DosSetRelMaxFH(%p, %p)", incr, pcurrent);
|
||||
|
||||
NATIVE_REPLACEMENT_TABLE("doscalls")
|
||||
NATIVE_REPLACEMENT(DosScanEnv, 227)
|
||||
NATIVE_REPLACEMENT(DosExit, 234)
|
||||
NATIVE_REPLACEMENT(DosWrite, 282)
|
||||
NATIVE_REPLACEMENT(DosExitList, 296)
|
||||
NATIVE_REPLACEMENT(DosGetInfoBlocks, 312)
|
||||
NATIVE_REPLACEMENT(DosQueryModuleName, 320)
|
||||
NATIVE_REPLACEMENT(DosCreateEventSem, 324)
|
||||
NATIVE_REPLACEMENT(DosCreateMutexSem, 331)
|
||||
NATIVE_REPLACEMENT(DosQuerySysInfo, 348)
|
||||
NATIVE_REPLACEMENT(DosSetExceptionHandler, 354)
|
||||
NATIVE_REPLACEMENT(DosSetSignalExceptionFocus, 378)
|
||||
NATIVE_REPLACEMENT(DosFlatToSel, 425)
|
||||
END_NATIVE_REPLACEMENT_TABLE()
|
||||
struct rlimit rlim;
|
||||
int rc = getrlimit(RLIMIT_NOFILE, &rlim);
|
||||
assert(rc == 0); // this shouldn't fail...right?
|
||||
if (pcurrent)
|
||||
*pcurrent = (ULONG) rlim.rlim_cur;
|
||||
|
||||
if (incr) {
|
||||
rlim.rlim_cur = (rlim_t) (((LONG) rlim.rlim_cur) + *incr);
|
||||
if (setrlimit(RLIMIT_NOFILE, &rlim) == 0) {
|
||||
if (pcurrent)
|
||||
*pcurrent = (ULONG) rlim.rlim_cur;
|
||||
} // if
|
||||
} // if
|
||||
|
||||
return NO_ERROR; // always returns NO_ERROR even if it fails.
|
||||
} // DosSetRelMaxFH
|
||||
|
||||
|
||||
APIRET DosAllocMem(PPVOID ppb, ULONG cb, ULONG flag)
|
||||
{
|
||||
TRACE_NATIVE("DosAllocMem(%p, %u, %u)", ppb, (uint) cb, (uint) flag);
|
||||
|
||||
// !!! FIXME: this API is actually much more complicated than this.
|
||||
*ppb = malloc(cb);
|
||||
if (!*ppb)
|
||||
return ERROR_NOT_ENOUGH_MEMORY;
|
||||
return NO_ERROR;
|
||||
} // DosAllocMem
|
||||
|
||||
|
||||
APIRET DosSubSetMem(PVOID pbBase, ULONG flag, ULONG cb)
|
||||
{
|
||||
TRACE_NATIVE("DosSubSetMem(%p, %u, %u)", pbBase, (uint) flag, (uint) cb);
|
||||
return NO_ERROR; // !!! FIXME: obviously wrong
|
||||
} // DosSubSetMem
|
||||
|
||||
|
||||
APIRET DosSubAllocMem(PVOID pbBase, PPVOID ppb, ULONG cb)
|
||||
{
|
||||
TRACE_NATIVE("DosSubAllocMem(%p, %p, %u)", pbBase, ppb, (uint) cb);
|
||||
*ppb = malloc(cb); // !!! FIXME: obviously wrong
|
||||
if (!*ppb)
|
||||
return ERROR_NOT_ENOUGH_MEMORY;
|
||||
return NO_ERROR;
|
||||
} // DosSubAllocMem
|
||||
|
||||
APIRET DosQueryHType(HFILE hFile, PULONG pType, PULONG pAttr)
|
||||
{
|
||||
TRACE_NATIVE("DosQueryHType(%u, %p, %p)", (uint) hFile, pType, pAttr);
|
||||
return ERROR_INVALID_HANDLE; // !!! FIXME: write me
|
||||
} // DosQueryHType
|
||||
|
||||
APIRET DosSetMem(PVOID pb, ULONG cb, ULONG flag)
|
||||
{
|
||||
TRACE_NATIVE("DosSetMem(%p, %u, %u)", pb, (uint) cb, (uint) flag);
|
||||
return NO_ERROR; // !!! FIXME: obviously wrong.
|
||||
} // DosSetMem
|
||||
|
||||
// end of doscalls.c ...
|
||||
|
||||
@@ -109,6 +109,12 @@ APIRET OS2API DosCreateMutexSem(PSZ pszName, PHMTX phmtx, ULONG flAttr, BOOL32 f
|
||||
APIRET OS2API DosSetExceptionHandler(PEXCEPTIONREGISTRATIONRECORD pERegRec);
|
||||
ULONG OS2API DosFlatToSel(void);
|
||||
APIRET OS2API DosSetSignalExceptionFocus(BOOL32 flag, PULONG pulTimes);
|
||||
APIRET OS2API DosSetRelMaxFH(PLONG pcbReqCount, PULONG pcbCurMaxFH);
|
||||
APIRET OS2API DosAllocMem(PPVOID ppb, ULONG cb, ULONG flag);
|
||||
APIRET OS2API DosSubSetMem(PVOID pbBase, ULONG flag, ULONG cb);
|
||||
APIRET OS2API DosSubAllocMem(PVOID pbBase, PPVOID ppb, ULONG cb);
|
||||
APIRET OS2API DosQueryHType(HFILE hFile, PULONG pType, PULONG pAttr);
|
||||
APIRET OS2API DosSetMem(PVOID pb, ULONG cb, ULONG flag);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -14,7 +14,6 @@ typedef struct COUNTRYCODE
|
||||
} COUNTRYCODE, *PCOUNTRYCODE;
|
||||
|
||||
APIRET OS2API DosQueryDBCSEnv(ULONG cb, PCOUNTRYCODE pcc, PCHAR pBuf);
|
||||
APIRET OS2API DosSetRelMaxFH(PLONG pcbReqCount, PULONG pcbCurMaxFH);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user