Changeset 3594


Ignore:
Timestamp:
Oct 2, 2007, 11:35:22 PM (18 years ago)
Author:
bird
Message:

Made it build on darwin - leaving a couple of things for later...

Location:
trunk/kStuff/kHlp
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/kStuff/kHlp/Bare/kHlpBare-gcc.c

    r3573 r3594  
    142142        KUPTR   u = ch | (ch << 8);
    143143        u |= u << 16;
    144 #if defined(__AMD64__)
     144#if K_ARCH_BITS >= 64
    145145        u |= u << 32;
     146#endif
     147#if K_ARCH_BITS >= 128
     148        u |= u << 64;
    146149#endif
    147150
  • TabularUnified trunk/kStuff/kHlp/Bare/kHlpBareAssert.c

    r3582 r3594  
    3131#include <k/kHlpString.h>
    3232
    33 #if K_OS == K_OS_OS2
     33#if K_OS == K_OS_DARWIN
     34extern kHlpSys_write(int fd, const void *buf, KSIZE);
     35
     36#elif K_OS == K_OS_OS2
    3437# define INCL_BASE
    3538# define INCL_ERRORS
     
    5154static void kHlpAssertWrite(const char *pszMsg)
    5255{
    53 #if K_OS == K_OS_OS2 ||  K_OS == K_OS_WINDOWS
     56#if K_OS == K_OS_DARWIN
     57    KSIZE cchMsg = kHlpStrLen(pszMsg);
     58    kHlpSys_write(2 /* stderr */, pszMsg, cchMsg);
     59
     60#elif K_OS == K_OS_OS2 ||  K_OS == K_OS_WINDOWS
    5461    /*
    5562     * Line by line.
  • TabularUnified trunk/kStuff/kHlp/Bare/kHlpBareEnv.c

    r3575 r3594  
    3232#include <k/kErrors.h>
    3333
    34 #if K_OS == K_OS_OS2
     34#if K_OS == K_OS_DARWIN
     35
     36#elif K_OS == K_OS_OS2
    3537# define INCL_BASE
    3638# define INCL_ERRORS
    3739# include <os2.h>
     40
    3841#elif  K_OS == K_OS_WINDOWS
    3942# include <Windows.h>
     43
    4044#else
    4145# error "port me"
     
    4549KHLP_DECL(int) kHlpGetEnv(const char *pszVar, char *pszVal, KSIZE cchVal)
    4650{
    47 #if K_OS == K_OS_OS2
     51#if K_OS == K_OS_DARWIN
     52    /** @todo need to figure out where the stuff is or how it's inherited on darwin ... */
     53    return KERR_ENVVAR_NOT_FOUND;
     54
     55#elif K_OS == K_OS_OS2
    4856    PSZ pszValue = NULL;
    4957    int rc;
  • TabularUnified trunk/kStuff/kHlp/Bare/kHlpBareHeap.c

    r3578 r3594  
    3838# define INCL_ERRORS
    3939# include <os2.h>
     40
    4041#elif  K_OS == K_OS_WINDOWS
    4142# include <Windows.h>
     43
    4244#else
    43 # error "port me"
     45# include <k/kHlpAlloc.h>
    4446#endif
    4547
     
    716718
    717719#else
    718 # error "Port me"
     720    int rc;
     721
     722    pSeg->cb = (cbMin + 0xffff) & ~(KSIZE)0xffff;
     723    pSeg->pvBase = NULL;
     724    rc = kHlpPageAlloc(&pSeg->pvBase, pSeg->cb, KPROT_READWRITE, K_FALSE);
     725    if (rc)
     726    {
     727        pSeg->pvBase = NULL;
     728        pSeg->cb = 0;
     729        return rc;
     730    }
     731
    719732#endif
    720733
     
    739752
    740753#else
    741 # error "Port me"
     754    int rc = kHlpPageFree(pSeg->pvBase, pSeg->cb);
     755    KHLPHEAP_ASSERT(!rc); (void)rc;
     756
    742757#endif
    743758}
  • TabularUnified trunk/kStuff/kHlp/Bare/kHlpBareProcess.c

    r3573 r3594  
    3131#include <k/kHlpAssert.h>
    3232
    33 #if K_OS == K_OS_OS2
     33#if K_OS == K_OS_DARWIN
     34extern void kHlpSys_exit(int rc);
     35
     36#elif K_OS == K_OS_OS2
    3437# define INCL_BASE
    3538# define INCL_ERRORS
     
    5154    for (;;)
    5255    {
    53 #if K_OS == K_OS_OS2
     56#if K_OS == K_OS_DARWIN
     57        kHlpSys_exit(rc);
     58
     59#elif K_OS == K_OS_OS2
    5460        DosExit(EXIT_PROCESS, rc);
    5561
  • TabularUnified trunk/kStuff/kHlp/Bare/kHlpBareThread.c

    r3573 r3594  
    3030#include <k/kHlpThread.h>
    3131
    32 #if K_OS == K_OS_OS2
     32#if K_OS == K_OS_DARWIN
     33
     34#elif K_OS == K_OS_OS2
    3335# define INCL_BASE
    3436# define INCL_ERRORS
     
    4850{
    4951#if K_OS == K_OS_OS2
     52    /** @todo mach_wait_until, see gen/nanosleep.c. */
     53
     54#elif K_OS == K_OS_OS2
    5055    DosSleep(cMillies);
    5156#elif  K_OS == K_OS_WINDOWS
  • TabularUnified trunk/kStuff/kHlp/Generic/kHlpPage.c

    r3575 r3594  
    3131#include <k/kHlpAssert.h>
    3232
    33 #if K_OS == K_OS_OS2
     33#if K_OS == K_OS_DARWIN
     34# include <sys/syscall.h>
     35# include <sys/mman.h>
     36extern void *kHlpSys_mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off);
     37extern int kHlpSys_mprotect(void *addr, size_t len, int prot);
     38extern int kHlpSys_munmap(void *addr, size_t len);
     39
     40#elif K_OS == K_OS_OS2
    3441# define INCL_BASE
    3542# define INCL_ERRORS
    3643# include <os2.h>
     44
    3745#elif  K_OS == K_OS_WINDOWS
    3846# include <Windows.h>
     47
    3948#else
    4049# error "port me"
     
    4554*   Global Variables                                                           *
    4655*******************************************************************************/
    47 #if K_OS == K_OS_OS2
     56#if K_OS == K_OS_DARWIN \
     57 || K_OS == K_OS_FREEBSD \
     58 || K_OS == K_OS_LINUX \
     59 || K_OS == K_OS_NETBSD \
     60 || K_OS == K_OS_OPENBSD \
     61 || K_OS == K_OS_SOLARIS
     62/* nothing */
     63#elif K_OS == K_OS_OS2
    4864/** The base of the loader stub object. <kLdr Hack>
    4965 * The OS/2 exe stub consists of a single data object. When allocating memory
     
    6278
    6379
    64 #if K_OS == K_OS_OS2
     80#if K_OS == K_OS_DARWIN \
     81 || K_OS == K_OS_FREEBSD \
     82 || K_OS == K_OS_LINUX \
     83 || K_OS == K_OS_NETBSD \
     84 || K_OS == K_OS_OPENBSD \
     85 || K_OS == K_OS_SOLARIS
     86static int kHlpPageProtToNative(KPROT enmProt)
     87{
     88    switch (enmProt)
     89    {
     90        case KPROT_NOACCESS:             return PROT_NONE;
     91        case KPROT_READONLY:             return PROT_READ;
     92        case KPROT_READWRITE:            return PROT_READ | PROT_WRITE;
     93        case KPROT_EXECUTE:              return PROT_EXEC;
     94        case KPROT_EXECUTE_READ:         return PROT_EXEC | PROT_READ;
     95        case KPROT_EXECUTE_READWRITE:    return PROT_EXEC | PROT_READ | PROT_WRITE;
     96        default:
     97            kHlpAssert(0);
     98            return ~0U;
     99    }
     100}
     101
     102#elif K_OS == K_OS_OS2
    65103static ULONG kHlpPageProtToNative(KPROT enmProt)
    66104{
     
    97135
    98136
     137
    99138/**
    100139 * Allocate a chunk of memory with page granularity.
     
    108147KHLP_DECL(int) kHlpPageAlloc(void **ppv, KSIZE cb, KPROT enmProt, KBOOL fFixed)
    109148{
    110 #if K_OS == K_OS_OS2
     149#if K_OS == K_OS_DARWIN
     150    void *pv;
     151
     152    pv = kHlpSys_mmap(fFixed ? *ppv : NULL, cb, kHlpPageProtToNative(enmProt),
     153                      fFixed ? MAP_FIXED | MAP_ANON: MAP_ANON, -1, 0);
     154    if ((KIPTR)pv < 256)
     155    {
     156        kHlpAssert(0);
     157        return (int)(KIPTR)pv; /** @todo convert errno to kErrors */
     158    }
     159    *ppv = pv;
     160    return 0;
     161
     162#elif K_OS == K_OS_OS2
    111163    APIRET  rc;
    112     ULONG   fFlags = kHlpPageProtToNative(enmProt);;
     164    ULONG   fFlags = kHlpPageProtToNative(enmProt);
    113165
    114166    if (!fFixed)
     
    163215KHLP_DECL(int) kHlpPageProtect(void *pv, KSIZE cb, KPROT enmProt)
    164216{
    165 #if K_OS == K_OS_OS2
     217#if K_OS == K_OS_DARWIN
     218    int rc;
     219
     220    rc = kHlpSys_mprotect(pv, cb, kHlpPageProtToNative(enmProt));
     221    if (!rc)
     222        return 0;
     223    /** @todo convert errno -> kErrors */
     224    kHlpAssert(0);
     225    return rc;
     226
     227#elif K_OS == K_OS_OS2
    166228    APIRET      rc;
    167     ULONG       fFlags = kHlpPageProtToNative(enmProt);;
     229    ULONG       fFlags = kHlpPageProtToNative(enmProt);
    168230
    169231    /*
     
    216278KHLP_DECL(int) kHlpPageFree(void *pv, KSIZE cb)
    217279{
    218 #if K_OS == K_OS_OS2
     280#if K_OS == K_OS_DARWIN
     281    int rc;
     282
     283    rc = kHlpSys_munmap(pv, cb);
     284    if (!rc)
     285        return 0;
     286    /** @todo convert errno -> kErrors */
     287    return rc;
     288
     289#elif K_OS == K_OS_OS2
    219290    APIRET rc;
    220291
Note: See TracChangeset for help on using the changeset viewer.