Ignore:
Timestamp:
Sep 2, 2000, 11:08:23 PM (25 years ago)
Author:
bird
Message:

Merged in the Grace branch. New Win32k!

Location:
trunk/src/win32k/include
Files:
3 added
26 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/win32k/include/LdrCalls.h

    r2501 r4164  
    1 /* $Id: LdrCalls.h,v 1.3 2000-01-22 18:21:00 bird Exp $
     1/* $Id: LdrCalls.h,v 1.4 2000-09-02 21:08:02 bird Exp $
    22 *
    33 * Prototypes for the loader overrided function.
     
    3535 */
    3636extern ULONG LDRCALL ldrOpen(   /* retd  0x0c */
    37     PSFN p1,                    /* ebp + 0x08 */
    38     PCHAR p2,                   /* ebp + 0x0c */
    39     ULONG p3                    /* ebp + 0x10 */
    40     );
    41 
    42 ULONG LDRCALL myldrOpen(PSFN,PCHAR,ULONG);
     37    PSFN    p1,                 /* ebp + 0x08 */
     38    PCHAR   p2,                 /* ebp + 0x0c */
     39    PULONG  p3                  /* ebp + 0x10 */
     40    );
     41
     42ULONG LDRCALL myldrOpen(PSFN phFile, PSZ pszFilename, PULONG pfl);
    4343
    4444
     
    4747 */
    4848extern ULONG LDRCALL ldrRead(   /* retd  0x18 */
    49     SFN p1,                     /* ebp + 0x08 */
    50     ULONG p2,                   /* ebp + 0x0c */
    51     PVOID p3,                   /* ebp + 0x10 */
    52     ULONG p4,                   /* ebp + 0x14 */
    53     ULONG p5,                   /* ebp + 0x18 */
    54     PMTE p6                     /* ebp + 0x1c */
     49    SFN     hFile,              /* ebp + 0x08 */
     50    ULONG   ulOffset,           /* ebp + 0x0c */
     51    PVOID   pvBuffer,           /* ebp + 0x10 */
     52    ULONG   fpBuffer,           /* ebp + 0x14 */
     53    ULONG   cbToRead,           /* ebp + 0x18 */
     54    PMTE    pMTE                /* ebp + 0x1c */
    5555    );
    5656
    5757ULONG LDRCALL myldrRead(
    58     SFN   hFile,
    59     ULONG ulOffset,
    60     PVOID pBuffer,
    61     ULONG ulFlags ,
    62     ULONG ulBytesToRead,
    63     PMTE  pMTE
     58    SFN     hFile,
     59    ULONG   ulOffset,
     60    PVOID   pvBuffer,
     61    ULONG   fpBuffer,
     62    ULONG   cbToRead,
     63    PMTE    pMTE
    6464    );
    6565
     
    9999
    100100
    101 #if 0
    102 /****************************************/
    103 /* _LDRLoadExe                          */
    104 /****************************************/
    105 extern int LDRCALL _LDRLoadExe(     /* retd  0x08 */
    106         PCHAR pExeName,             /* ebp + 0x08 */
    107         PULONG param2               /* ebp + 0x0c */
    108     );
    109 
    110 int LDRCALL myLDRLoadExe(PCHAR,PULONG);
    111 
    112 
    113 
    114 /****************************************/
    115 /* _ldrGetResource                      */
    116 /****************************************/
    117 extern int LDRCALL _ldrGetResource( /* retd 0x14 - 20d */
    118         USHORT idType,              /* ebp + 0x08 */
    119         ULONG  idName,              /* ebp + 0x0c */
    120         USHORT hMod,                /* ebp + 0x10 */
    121         PPVOID ppRes,               /* ebp + 0x14 */
    122         ULONG ulP5                  /* ebp + 0x18 */
    123     );
    124 
    125 int LDRCALL myldrGetResource(USHORT,ULONG,USHORT,PPVOID,ULONG);
    126 
    127 
    128 
    129 /****************************************/
    130 /* _ldrOpenNewExe                       */
    131 /****************************************/
    132 extern int LDRCALL _ldrOpenNewExe(  /* retd 0x10 - 16d */
    133         PCHAR  pszName,             /* ebp + 0x08 */
    134         USHORT lenName,             /* ebp + 0x0c */
    135         ULONG  ulP3,                /* ebp + 0x10 */
    136         ULONG  ulP4                 /* ebp + 0x14 */
    137     );
    138 
    139 int LDRCALL myldrOpenNewExe(PCHAR,USHORT,ULONG,ULONG);
    140 
    141 
    142 
    143 /****************************************/
    144 /* _ldrCreateMte                        */
    145 /****************************************/
    146 extern int LDRCALL  _ldrCreateMte(  /* retd  0x08 */
    147         ULONG p1,                   /* ebp + 0x08 */
    148         ULONG p2                    /* ebp + 0x0c */
    149     );
    150 
    151 int LDRCALL myldrCreateMte(ULONG,ULONG);
    152 
    153 
    154 
    155 /****************************************/
    156 /* _ldrGetMte                           */
    157 /****************************************/
    158 extern int LDRCALL  _ldrGetMte(     /* retd 0x14 - 20d */
    159         ULONG  p1,                  /* ebp + 0x08 */
    160         ULONG  p2,                  /* ebp + 0x0c */
    161         ULONG  p3,                  /* ebp + 0x10 */
    162         ULONG  p4,                  /* ebp + 0x14 */
    163         ULONG  p5                   /* ebp + 0x18 */
    164     );
    165 
    166 int LDRCALL myldrGetMte(ULONG,ULONG,ULONG,ULONG,ULONG);
    167 
    168 #endif
     101
     102/**
     103 * Loader local variables from KERNEL.SDF.
     104 */
     105typedef struct ldrlv_s /* #memb 12 size 39 (0x027) */
     106{
     107    PMTE        lv_pmte;                /* Pointer to mte. (ldrCreateMte/ldrXXX) */
     108    ULONG       lv_lbufaddr;
     109    ULONG       lv_sbufaddr;
     110    ULONG       lv_lrecbufaddr;
     111    ULONG       lv_srecbufaddr;
     112    ULONG       lv_new_exe_off;
     113    USHORT      lv_sfn;                 /* Handle to the module being loaded */
     114    USHORT      lv_hobmte;
     115    ULONG       lv_objnum;
     116    ULONG       lv_csmte;               /* size of the swappable mte heap block. (ldrCreateMte) */
     117    USHORT      lv_class;               /* Object class CLASS_* defines in OS2Krnl (mteflags1) it seems. */
     118                                        /* CLASS_PROGRAM    Program class. */
     119                                        /* CLASS_GLOBAL     Global class. */
     120                                        /* CLASS_SPECIFIC   Specific class, as against global. */
     121                                        /* CLASS_ALL (0)    Nonspecific class  all modules. */
     122                                        /* CLASS_MASK       Class mask. */
     123    UCHAR       lv_type;                /* Type of executable image expected loaded. */
     124} ldrlv_t;
     125
     126
     127/*
     128 * Values of the lv_type byte. (Qualified guesses.)
     129 */
     130#define LVTYPE_EXE      0               /* Executable program. */
     131#define LVTYPE_DLL      1               /* Dynamic Link Library. */
     132#define LVTYPE_DD       2               /* Device Driver. */
     133#define LVTYPE_IFS      3               /* Installable Filesystem. */
     134#define LVTYPE_VDD      4               /* Virtual Device Driver (for VDMs). */
     135
     136
     137
     138/**
     139 * ldrOpenPath
     140 * @returns   OS2 return code.
     141 *            pLdrLv->lv_sfn  is set to filename handle.
     142 * @param     pachModname   Pointer to modulename. Not zero terminated!
     143 * @param     cchModname    Modulename length.
     144 * @param     pLdrLv        Loader local variables? (Struct from KERNEL.SDF)
     145 * @param     pfl           Pointer to flags which are passed on to ldrOpen.
     146 * @sketch
     147 *  if !CLASS_GLOBAL or miniifs then
     148 *      ldrOpen(pachModName)
     149 *  else
     150 *      loop until no more libpath elements
     151 *          get next libpath element and add it to the modname.
     152 *          try open the modname
     153 *          if successfull then break the loop.
     154 *      endloop
     155 *  endif
     156 */
     157extern ULONG LDRCALL ldrOpenPath(   /* retd  0x10 */
     158    PCHAR       pachFilename,       /* ebp + 0x08 */
     159    USHORT      cchFilename,        /* ebp + 0x0c */
     160    ldrlv_t *   plv,                /* ebp + 0x10 */
     161    PULONG      pful                /* ebp + 0x14 */
     162    );
     163
     164ULONG LDRCALL myldrOpenPath(PCHAR pachFilename, USHORT cchFilename, ldrlv_t *plv, PULONG pful);
     165
     166
     167/**
     168 * Finds a module if it's loaded.
     169 * @returns     NO_ERROR on success.
     170 *              OS/2 errorcode on error.
     171 * @param       pachFilename    Pointer to module filename.
     172 * @param       cchFilename     Length of modulefilename.
     173 * @param       usClass         Module class. (CLASS_*)
     174 * @param       ppMTE           Pointer to pMTE found.
     175 * @sketch
     176 */
     177ULONG LDRCALL ldrFindModule(PCHAR pachFilename, USHORT cchFilename, USHORT usClass, PPMTE ppMTE);
     178
     179
     180/**
     181 * LDRClearSem - Clears the loader semaphore.
     182 * (It does some garbage collection on release.)
     183 * @returns   NO_ERROR on success.
     184 *            OS/2 error on failure. (ERROR_INTERRUPT?)
     185 */
     186extern ULONG LDRCALL LDRClearSem(void);
     187
     188
     189/**
     190 * LDRRequestSem - Requests the loader semaphore..
     191 * @returns   NO_ERROR if succesfully.
     192 *            OS2 errorcode on failure. (ERROR_INTERRUPT?)
     193 */
     194#define LDRRequestSem()   KSEMRequestMutex(pLdrSem, (ULONG)-1)
     195
     196
     197/*
     198 * Pointer to the loader semaphore.
     199 */
     200#ifdef _OS2KSEM_h_
     201extern PKSEMMTX    pLdrSem;
     202#endif
     203
     204
     205/**
     206 * Validates an hMTE and gets the MTE pointer.
     207 * @returns   Pointer to MTE on success.
     208 *            NULL on error.
     209 * @param     hMTE  MTE handle.
     210 * @remark    If you wan't to this faster:
     211 *              Use the hMTE as a HOB and get the HOB address (by using VMGetHandleInfo).
     212 */
     213extern PMTE LDRCALL ldrValidateMteHandle(HMTE hMTE);
     214
     215
     216/**
     217 * Gets the pMTE from a hMTE. No checks.
     218 * @returns     Pointer to the pMTE for a given hMTE.
     219 * @param       hMTE    Module handle.
     220 * @sketch
     221 */
     222extern PMTE KRNLCALL ldrASMpMTEFromHandle(HMTE  hMTE);
     223
     224
     225/**
     226 * Pointer to the loader filename buffer.
     227 * Upon return from ldrOpen (and ldrOpenPath which calls ldrOpen) this is
     228 * set to the fully qualified filename of the file last opened (successfully).
     229 */
     230extern PSZ *pldrpFileNameBuf;
     231#define ldrpFileNameBuf (*pldrpFileNameBuf)
     232
    169233
    170234#ifdef __cplusplus
  • trunk/src/win32k/include/ModuleBase.h

    r2925 r4164  
    1 /* $Id: ModuleBase.h,v 1.3 2000-02-27 02:16:43 bird Exp $
     1/* $Id: ModuleBase.h,v 1.4 2000-09-02 21:07:59 bird Exp $
    22 *
    33 * ModuleBase - Declaration of the Basic module class.
    44 *
    5  * Copyright (c) 1999 knut st. osmundsen
     5 * Copyright (c) 1999-2000 knut st. osmundsen
    66 *
    77 * Project Odin Software License can be found in LICENSE.TXT
    88 *
    99 */
    10 #ifndef _MODULEBASE_H_
    11 #define _MODULEBASE_H_
     10#ifndef _modulebase_h_
     11#define _modulebase_h_
    1212
    1313
     
    7373 *           RING0: Map this to ldrRead with 0UL as flFlags.
    7474 *           RING3: Implementes this function as a static function, ReadAt.
    75  *  ReadAtF: Same as ReadAt but two extra parameters; an additional flag and a pointer to an MTE.
    76  *           Used in the read method.
     75 *  ReadAtF: Same as ReadAt but two extra parameters; an additional far pointer to the buffer and
     76 *           a MTE pointer. Used in the read method.
    7777 *           RING0: Map directly to ldrRead.
    7878 *           RING3: Map to ReadAt, ignoring the two extra parameters.
     
    8181    #define ReadAt(hFile, ulOffset, pvBuffer, cbToRead) \
    8282        ldrRead(hFile, ulOffset, pvBuffer, 0UL, cbToRead, NULL)
    83     #define ReadAtF(hFile, ulOffset, pvBuffer, cbToRead, flFlags, pMTE) \
    84         ldrRead(hFile, ulOffset, pvBuffer, flFlags, cbToRead, pMTE)
     83    #define ReadAtF(hFile, ulOffset, pvBuffer, fpBuffer, cbToRead, pMTE) \
     84        ldrRead(hFile, ulOffset, pvBuffer, fpBuffer, cbToRead, pMTE)
    8585#else
    86     #define ReadAtF(hFile, ulOffset, pvBuffer, cbToRead, flFlags, pMTE) \
     86    #define ReadAtF(hFile, ulOffset, pvBuffer, fpBuffer, cbToRead, pMTE) \
    8787        ReadAt(hFile, ulOffset, pvBuffer, cbToRead)
    8888#endif
     
    9696#endif
    9797
    98 
     98/*
     99 * Make sure that pLdrLv is defined.
     100 */
     101#if !defined(RING0) && !defined(_ldrCalls_h_)
     102typedef struct ldrlv_s  ldrlv_t;
     103#endif
    99104
    100105/**
     
    111116
    112117    /** @cat Public Main methods */
    113     virtual ULONG  init(PCSZ pszFilename);
    114     virtual ULONG  read(ULONG offLXFile, PVOID pvBuffer, ULONG cbToRead, ULONG flFlags, PMTE pMTE) = 0;
    115     virtual ULONG  applyFixups(PMTE pMTE, ULONG iObject, ULONG iPageTable, PVOID pvPage,
    116                                ULONG ulPageAddress, PVOID pvPTDA); /*(ldrEnum32bitRelRecs)*/
     118    virtual ULONG   init(PCSZ pszFilename);
     119    virtual ULONG   read(ULONG offLXFile, PVOID pvBuffer, ULONG fpBuffer, ULONG cbToRead, PMTE pMTE) = 0;
     120    virtual ULONG   applyFixups(PMTE pMTE, ULONG iObject, ULONG iPageTable, PVOID pvPage,
     121                                ULONG ulPageAddress, PVOID pvPTDA); /*(ldrEnum32bitRelRecs)*/
     122    virtual ULONG   openPath(PCHAR pachFilename, USHORT cchFilename, ldrlv_t *pLdrLv, PULONG pful); /* (ldrOpenPath) */
    117123    #ifndef RING0
    118     virtual ULONG  writeFile(PCSZ pszLXFilename);
     124    virtual ULONG   writeFile(PCSZ pszLXFilename);
    119125    #endif
    120126
    121127    /** @cat public Helper methods */
    122     virtual VOID   dumpVirtualLxFile() = 0;
    123     BOOL           queryIsModuleName(PCSZ pszFilename);
     128    virtual VOID    dumpVirtualLxFile() = 0;
     129    BOOL            queryIsModuleName(PCSZ pszFilename);
     130    PCSZ            getFilename();
     131    PCSZ            getModuleName();
    124132
    125133    /** @cat static print method */
     
    133141    SFN         hFile;                  /* filehandle */
    134142    PSZ         pszFilename;            /* fullpath */
    135     PSZ         pszModuleName;          /* filename without extention. */
     143    PSZ         pszModuleName;          /* filename without path and extention. */
    136144
    137145    /** @cat public static data. */
  • trunk/src/win32k/include/OS2KPTDA.h

    r3829 r4164  
    1 /* $Id: OS2KPTDA.h,v 1.1 2000-07-16 22:21:19 bird Exp $
     1/* $Id: OS2KPTDA.h,v 1.2 2000-09-02 21:07:59 bird Exp $
    22 *
    33 * PTDA access functions.
     
    5454
    5555
    56 USHORT  ptdaGet_ptda_environ(PPTDA pPTDA);
    57 
     56USHORT      ptdaGet_ptda_environ(PPTDA pPTDA);
     57USHORT      ptdaGet_ptda_module(PPTDA pPTDA);
     58HKSEMMTX    ptda_ptda_ptdasem(PPTDA pPTDA);
    5859
    5960#ifdef __cplusplus
  • trunk/src/win32k/include/OS2KSEM.h

    r3829 r4164  
    1 /* $Id: OS2KSEM.h,v 1.1 2000-07-16 22:21:19 bird Exp $
     1/* $Id: OS2KSEM.h,v 1.2 2000-09-02 21:07:59 bird Exp $
    22 *
    33 * OS/2 kernel Semaphore functions.
     
    1616*   Defined Constants And Macros                                               *
    1717*******************************************************************************/
    18 #define KSEM_INDEFINITE_WAIT     -1L
    19 #define KSEM_IMMEDIATE_RETURN     0L
     18#define KSEM_INDEFINITE_WAIT       -1UL
     19#define KSEM_IMMEDIATE_RETURN       0UL
     20
     21/*
     22 * Semaphore type. ( Used with the generic KSEM routines. )
     23 */
     24#define KSEM_EVENT                  0
     25#define KSEM_MUTEX                  1
     26#define KSEM_SHARED                 2
     27
     28/*
     29 * Sempahore flags. (according to SG24-4640-00)
     30 */
     31#define KSEM_DEFAULT                0
     32#define KSEM_NOINTERRUPT            1
     33#define KSEM_WRITE                  2
     34#define KSEM_DISPLAYID              4
     35#define KSEM_NOBLOCKED              8
    2036
    2137
     
    2339*   Structures and Typedefs                                                    *
    2440*******************************************************************************/
    25 typedef ULONG  HKSEM;                   /* Handle to kernel semaphore. */
    26 typedef HKSEM  PHKSEM;                  /* Pointer to kernel semaphore handle. */
    27 typedef HKSEM  HKMTX;                   /* Handle to kernel mutex semaphore. */
    28 typedef HKSEM  HKEV;                    /* Handle to kernel event semaphore. */
     41/* (This is according to SG24-4640-00.) */
     42
     43typedef struct _KSEMSHR
     44{
     45    /**
     46     * Astrict 16 is byte while retail 12 is bytes.
     47     * We'll reserve 20 bytes just to be sure!.
     48     */
     49    char achDummy[20];
     50
     51    struct
     52    {
     53        char            ks_achSignature[4];
     54        char            ks_bFlags;
     55        char            ks_bType;
     56        unsigned short  ks_Owner;
     57        unsigned short  ks_cusPendingWriters;
     58        unsigned short  ks_cusNest;
     59        unsigned short  ks_cusReaders;
     60        unsigned short  ks_cusPendingReaders;
     61    } debug;
     62
     63    struct
     64    {
     65        char            ks_bFlags;
     66        char            ks_bType;
     67        unsigned short  ks_Owner;
     68        unsigned short  ks_cusPendingWriters;
     69        unsigned short  ks_cusNest;
     70        unsigned short  ks_cusReaders;
     71        unsigned short  ks_cusPendingReaders;
     72    } release;
     73
     74}   KSEMSHR,
     75   *PKSEMSHR,
     76   *HKSEMSHR;                           /* Handle to kernel shared semphore. */
     77typedef HKSEMSHR * PHKSEMSHR;
     78
     79
     80typedef union _KSEMMTX
     81{
     82    /**
     83     * Astrict is 12 byte while retail is 8 bytes.
     84     * We'll reserve 20 bytes just to be sure!
     85     */
     86    char achDummy[20];
     87
     88    struct
     89    {
     90        char            ksem_achSignature[4];
     91        char            ksem_bFlags;
     92        char            ksem_bType;
     93        unsigned short  ksem_Owner;
     94        unsigned short  ksem_cusPendingWriters;
     95        unsigned short  ksem_cusNest;
     96    }debug;
     97    struct
     98    {
     99        char            ksem_bFlags;
     100        char            ksem_bType;
     101        unsigned short  ksem_Owner;
     102        unsigned short  ksem_cusPendingWriters;
     103        unsigned short  ksem_cusNest;
     104    } release;
     105}   KSEMMTX,
     106   *PKSEMMTX,
     107   *HKSEMMTX;                           /* Handle to kernel mutex semaphore. */
     108typedef HKSEMMTX * PHKSEMMTX;
     109
     110
     111typedef struct _KSEMEVT
     112{
     113    /**
     114     * Astrict is 16 byte while retail is 12 bytes.
     115     * We'll reserve 20 bytes just to be sure!
     116     */
     117    char achDummy[20];
     118
     119    struct
     120    {
     121        char            kse_achSignature[4];
     122        char            kse_bFlags;
     123        char            kse_bType;
     124        unsigned short  kse_Owner;
     125        unsigned short  kse_cusPendingWriters;
     126    } debug;
     127
     128    struct
     129    {
     130        char            kse_bFlags;
     131        char            kse_bType;
     132        unsigned short  kse_Owner;
     133        unsigned short  kse_cusPendingWriters;
     134    } release;
     135
     136}   KSEMEVT,
     137   *PKSEMEVT,
     138   *HKSEMEVT;                           /* Handle to kernel event sempahore. */
     139typedef HKSEMEVT * PHKSEMEVT;
     140
     141
     142typedef union _KSEM
     143{
     144    KSEMSHR shr;
     145    KSEMMTX mtx;
     146    KSEMEVT evt;
     147} KSEM, *PKSEM, *HKSEM;                 /* Generic kernel semaphore handle. */
     148typedef HKSEM * PHKSEM;
    29149
    30150
     
    34154/*
    35155 * Mutex semaphores.
    36  * NOTE! Only is KSEMRequestMutex currently is imported!
    37156 */
    38 extern ULONG KRNLCALL KSEMRequestMutex(HKMTX hkmtx, ULONG ulTimeout);
    39 extern VOID  KRNLCALL KSEMReleaseMutex(HKMTX hkmtx);
    40 extern ULONG KRNLCALL KSEMQueryMutex(HKMTX hkmtx, PUSHORT pus);
     157extern ULONG KRNLCALL KSEMRequestMutex(HKSEMMTX hkmtx, ULONG ulTimeout);
     158extern VOID  KRNLCALL KSEMReleaseMutex(HKSEMMTX hkmtx);
     159extern ULONG KRNLCALL KSEMQueryMutex(HKSEMMTX hkmtx, PUSHORT pcusNest);
    41160
    42161
     
    48167extern VOID  KRNLCALL KSEMPostEvent(HKEV hkevent);
    49168extern ULONG KRNLCALL KSEMWaitEvent(HKEV hkevent);
     169#endif
    50170
    51171/*
    52172 * Some other KSEM prefixed functions - parameters's not that obvious...
    53173 */
     174#if 0
    54175extern ULONG KRNLCALL KSEMAlloc(PHKSEM phksem, ULONG p1, ULONG p2);
    55176extern ULONG KRNLCALL KSEMCreate(PHKSEM phksem, ULONG type);
     
    57178extern ULONG KRNLCALL KSEMRequestShared(HKSEM hksem, ULONG);
    58179extern VOID  KRNLCALL KSEMDestroy(HKSEM hksem);
    59 extern VOID  KRNLCALL KSEMInit(HKSEM hksem, ULONG p1, ULONG p2);
     180#endif
     181extern VOID  KRNLCALL KSEMInit(PKSEM pksem, ULONG fulType, ULONG fulFlags);
     182#if 0
    60183extern VOID  KRNLCALL KSEMQuery(HKSEM hksem, ULONG p2)
    61184extern VOID  KRNLCALL KSEMRelease(HKSEM hksem);
  • trunk/src/win32k/include/OS2KTK.h

    r3829 r4164  
    1 /* $Id: OS2KTK.h,v 1.1 2000-07-16 22:21:18 bird Exp $
     1/* $Id: OS2KTK.h,v 1.2 2000-09-02 21:08:00 bird Exp $
    22 *
    33 * OS2KTK - OS/2 Kernel Task.
     
    2121
    2222#define TKFuChar(pch, pchUsr) \
    23             TKFuBuff((PVOID)pch, (PVOID)pchUsr, sizeof(char), TK_FUSU_FATAL);
     23            TKFuBuff((PVOID)pch, (PVOID)pchUsr, sizeof(char), TK_FUSU_FATAL)
    2424#define TKSuChar(pchUsr, pch) \
    25             TKSuBuff((PVOID)pchUsr, (PVOID)pch, sizeof(char), TK_FUSU_FATAL);
     25            TKSuBuff((PVOID)pchUsr, (PVOID)pch, sizeof(char), TK_FUSU_FATAL)
    2626
    2727#define TKFuCharNF(pch, pchUsr) \
    28             TKFuBuff((PVOID)pch, (PVOID)pchUsr, sizeof(char), TK_FUSU_NONFATAL);
     28            TKFuBuff((PVOID)pch, (PVOID)pchUsr, sizeof(char), TK_FUSU_NONFATAL)
    2929#define TKSuCharNF(pchUsr, pch) \
    30             TKSuBuff((PVOID)pchUsr, (PVOID)pch, sizeof(char), TK_FUSU_NONFATAL);
     30            TKSuBuff((PVOID)pchUsr, (PVOID)pch, sizeof(char), TK_FUSU_NONFATAL)
    3131
    3232
    3333#define TKFuUShort(pus, pusUsr) \
    34             TKFuBuff((PVOID)pus, (PVOID)pusUsr, sizeof(USHORT), TK_FUSU_FATAL);
     34            TKFuBuff((PVOID)pus, (PVOID)pusUsr, sizeof(USHORT), TK_FUSU_FATAL)
    3535#define TKSuUShort(pusUsr, pus) \
    36             TKSuBuff((PVOID)pusUsr, (PVOID)pus, sizeof(USHORT), TK_FUSU_FATAL);
     36            TKSuBuff((PVOID)pusUsr, (PVOID)pus, sizeof(USHORT), TK_FUSU_FATAL)
    3737
    3838#define TKFuUShortNF(pus, pusUsr) \
    39             TKFuBuff((PVOID)pus, (PVOID)pusUsr, sizeof(USHORT), TK_FUSU_NONFATAL);
     39            TKFuBuff((PVOID)pus, (PVOID)pusUsr, sizeof(USHORT), TK_FUSU_NONFATAL)
    4040#define TKSuUShortNF(pusUsr, pus) \
    41             TKSuBuff((PVOID)pusUsr, (PVOID)pus, sizeof(USHORT), TK_FUSU_NONFATAL);
     41            TKSuBuff((PVOID)pusUsr, (PVOID)pus, sizeof(USHORT), TK_FUSU_NONFATAL)
    4242
    4343
    4444#define TKFuULong(pul, pulUsr) \
    45             TKFuBuff((PVOID)pul, (PVOID)pulUsr, sizeof(ULONG), TK_FUSU_FATAL);
     45            TKFuBuff((PVOID)pul, (PVOID)pulUsr, sizeof(ULONG), TK_FUSU_FATAL)
    4646#define TKSuULong(pulUsr, pul) \
    47             TKSuBuff((PVOID)pulUsr, (PVOID)pul, sizeof(ULONG), TK_FUSU_FATAL);
     47            TKSuBuff((PVOID)pulUsr, (PVOID)pul, sizeof(ULONG), TK_FUSU_FATAL)
    4848
    4949#define TKFuULongNF(pul, pulUsr) \
    50             TKFuBuff((PVOID)pul, (PVOID)pulUsr, sizeof(ULONG), TK_FUSU_NONFATAL);
     50            TKFuBuff((PVOID)pul, (PVOID)pulUsr, sizeof(ULONG), TK_FUSU_NONFATAL)
    5151#define TKSuULongNF(pulUsr, pul) \
    52             TKSuBuff((PVOID)pulUsr, (PVOID)pul, sizeof(ULONG), TK_FUSU_NONFATAL);
     52            TKSuBuff((PVOID)pulUsr, (PVOID)pul, sizeof(ULONG), TK_FUSU_NONFATAL)
    5353
    5454
  • trunk/src/win32k/include/OS2KVM.h

    r3411 r4164  
    1 /* $Id: OS2KVM.h,v 1.4 2000-04-17 01:56:49 bird Exp $
     1/* $Id: OS2KVM.h,v 1.5 2000-09-02 21:08:00 bird Exp $
    22 *
    33 * OS/2 kernel VM functions.
     
    8282
    8383
    84 typedef USHORT HMTE, *PHMTE;
    85 typedef USHORT HPTDA, *PHPTDA;
    86 
    8784/*******************************************************************************
    8885*   Exported Functions                                                         *
     
    108105    PUSHORT pushPTDA);
    109106
     107PMTE KRNLCALL VMPseudoHandleMap(
     108    HMTE    hMTE);
    110109#endif
  • trunk/src/win32k/include/OS2Krnl.h

    r2799 r4164  
    1 /* $Id: OS2Krnl.h,v 1.7 2000-02-15 23:39:19 bird Exp $
     1/* $Id: OS2Krnl.h,v 1.8 2000-09-02 21:08:00 bird Exp $
    22 *
    33 * OS/2 kernel structures, typedefs and macros.
     
    153153} MTE,*PMTE,**PPMTE;
    154154
     155typedef USHORT HMTE, *PHMTE;
     156typedef USHORT HPTDA, *PHPTDA;
    155157
    156158
     
    228230
    229231/*
     232 * Calling convention for Security Helpers.
     233 */
     234#define SECCALL  _System
     235
     236/*
    230237 *
    231238 * Other Kernel Parts
     
    235242    #define INCL_OS2KRNL_IO
    236243    #define INCL_OS2KRNL_VM
     244    #define INCL_OS2KRNL_SEM
     245    #define INCL_OS2KRNL_TK
     246    #define INCL_OS2KRNL_PTDA
     247    #define INCL_OS2KRNL_TCB
     248    #define INCL_OS2KRNL_SEC
     249#endif
     250
     251#if defined(INCL_OS2KRNL_PTDA) && !defined(INCL_OS2KRNL_SEM)
     252    #define INCL_OS2KRNL_SEM
    237253#endif
    238254
     
    245261#endif
    246262
    247 #endif
     263#ifdef INCL_OS2KRNL_SEM
     264    #include <OS2KSEM.h>
     265#endif
     266
     267#ifdef INCL_OS2KRNL_TK
     268    #include <OS2KTK.h>
     269#endif
     270
     271#ifdef INCL_OS2KRNL_PTDA
     272    #include <OS2KPTDA.h>
     273#endif
     274
     275#ifdef INCL_OS2KRNL_TCB
     276    #include <OS2KTCB.h>
     277#endif
     278
     279#ifdef INCL_OS2KRNL_SEC
     280    #include <OS2KSEC.h>
     281#endif
     282
     283#endif
  • trunk/src/win32k/include/dev16.h

    r2898 r4164  
    1 /* $Id: dev16.h,v 1.8 2000-02-25 18:15:04 bird Exp $
     1/* $Id: dev16.h,v 1.9 2000-09-02 21:08:00 bird Exp $
    22 * dev16 - 16-bit specific. Should not be used in 32-bit C/C++.
    33 *
     
    113113USHORT NEAR R0Init16(PRP_GENIOCTL pRp);
    114114USHORT NEAR initGetDosTableData(void);
    115 
     115#if 0 /*ndef CODE16_INIT*/
     116#pragma alloc_text(CODE16_INIT, dev0Init, dev1Init, R0Init16, initGetDosTableData)
     117#endif
    116118
    117119/*
     
    123125USHORT NEAR CallElfIOCtl(LIN pRpIOCtl);
    124126USHORT NEAR CallWin32kIOCtl(LIN pRpIOCtl);
     127#if 0 /*ndef CODE16_INIT*/
     128#pragma alloc_text(CODE16_INIT, CallR0Init32, CallVerifyImportTab32, CallGetKernelInfo32)
     129#endif
    125130
    126131
     
    148153#define SSToDS_16(pStackVar) (SSToDS_16a((void NEAR *)pStackVar))
    149154
    150 extern LIN   SSToDS_16a(void NEAR *pStackVar);
     155extern LIN NEAR SSToDS_16a(void NEAR *pStackVar);
    151156
    152157/*
    153158 * START and END labels. NOTE: these are not bytes only assembly labels.
    154159 */
    155 extern char PASCAL CODE16START      ;
    156 extern char PASCAL DATA16START      ;
    157160extern char PASCAL DATA16START      ;
    158161extern char PASCAL DATA16_BSSSTART  ;
    159162extern char PASCAL DATA16_CONSTSTART;
     163extern char PASCAL DATA16_INITSTART      ;
     164extern char PASCAL DATA16_INIT_BSSSTART  ;
     165extern char PASCAL DATA16_INIT_CONSTSTART;
    160166extern char PASCAL CODE16START      ;
     167extern char PASCAL CODE16_INITSTART      ;
    161168extern char PASCAL CODE32START      ;
    162169extern char PASCAL DATA32START      ;
     
    168175extern char PASCAL CODE16END      ;
    169176extern char PASCAL DATA16END      ;
    170 extern char PASCAL DATA16END      ;
    171177extern char PASCAL DATA16_BSSEND  ;
    172178extern char PASCAL DATA16_CONSTEND;
     179extern char PASCAL DATA16_INITEND      ;
     180extern char PASCAL DATA16_INIT_BSSEND  ;
     181extern char PASCAL DATA16_INIT_CONSTEND;
    173182extern char PASCAL CODE16END      ;
     183extern char PASCAL CODE16_INITEND      ;
    174184extern char PASCAL CODE32END      ;
    175185extern char PASCAL DATA32END      ;
     
    180190
    181191
    182 
    183 
    184192#endif
  • trunk/src/win32k/include/dev1632.h

    r3321 r4164  
    1 /* $Id: dev1632.h,v 1.5 2000-04-05 18:40:41 bird Exp $
     1/* $Id: dev1632.h,v 1.6 2000-09-02 21:08:00 bird Exp $
    22 * dev1632.h - Common header file for 16-bit and 32-bit C
    33 *
     
    5050typedef struct _KRNLINFO
    5151{
     52    unsigned long   ulBuild;
     53    unsigned short  fKernel;
    5254    unsigned char   cObjects;
    53     unsigned char   fDebug;
    54     unsigned char   fchType;             /* TYPE_SMP, TYPE_UNI, TYPE_W4 */
    55     unsigned short  usBuild;
     55    unsigned char   chPadding;
    5656    OTE             aObjects[MAXKRNLOBJECTS];
    5757} KRNLINFO, FAR * PKRNLINFO;
     
    6464
    6565#pragma pack()
     66
     67
     68/*
     69 * Global data...
     70 */
     71extern CHAR DATA16_GLOBAL   szBuildDate[];
     72extern CHAR DATA16_GLOBAL   szBuildTime[];
     73#if defined(__IBMC__) || defined(__IBMCPP__)
     74    #pragma map( szBuildDate , "_szBuildDate" )
     75    #pragma map( szBuildTime , "_szBuildTime" )
    6676#endif
     77
     78#endif
  • trunk/src/win32k/include/dev32.h

    r2898 r4164  
    1 /* $Id: dev32.h,v 1.8 2000-02-25 18:15:04 bird Exp $
     1/* $Id: dev32.h,v 1.9 2000-09-02 21:08:00 bird Exp $
    22 *
    33 * dev32 - header file for 32-bit part of the driver.
     
    100100 * START and END labels. NOTE: these are not bytes only assembly labels.
    101101 */
    102 extern char CODE16START      ;
    103 extern char DATA16START      ;
    104102extern char DATA16START      ;
    105103extern char DATA16_BSSSTART  ;
    106104extern char DATA16_CONSTSTART;
     105extern char DATA16_INITSTART      ;
     106extern char DATA16_INIT_BSSSTART  ;
     107extern char DATA16_INIT_CONSTSTART;
    107108extern char CODE16START      ;
     109extern char CODE16_INITSTART      ;
    108110extern char CODE32START      ;
    109111extern char DATA32START      ;
     
    115117extern char CODE16END      ;
    116118extern char DATA16END      ;
    117 extern char DATA16END      ;
    118119extern char DATA16_BSSEND  ;
    119120extern char DATA16_CONSTEND;
     121extern char DATA16_INITEND      ;
     122extern char DATA16_INIT_BSSEND  ;
     123extern char DATA16_INIT_CONSTEND;
    120124extern char CODE16END      ;
     125extern char CODE16_INITEND      ;
    121126extern char CODE32END      ;
    122127extern char DATA32END      ;
     
    126131extern char EH_DATAEND     ;
    127132
    128 
    129 
    130 
    131133#endif
  • trunk/src/win32k/include/devSegDf.inc

    r2838 r4164  
    1 ; $Id: devSegDf.inc,v 1.5 2000-02-21 09:24:00 bird Exp $
     1; $Id: devSegDf.inc,v 1.6 2000-09-02 21:08:01 bird Exp $
    22;
    33; Segment definitions for win32k.sys.
     
    1818DATA16_CONST ends
    1919
    20 DATA16_GROUP    group DATA16, DATA16_CONST, DATA16_BSS
     20DATA16_GLOBAL segment word public 'FAR_DATA' use16
     21DATA16_GLOBAL ends
     22
     23;DATA16_GROUP    group DATA16, DATA16_CONST, DATA16_BSS, DATA16_GLOBAL
     24
     25
     26DATA16_INIT segment word public 'FAR_DATA' use16
     27DATA16_INIT ends
     28
     29DATA16_INIT_CONST segment word public 'FAR_DATA' use16
     30DATA16_INIT_CONST ends
     31
     32DATA16_INIT_BSS segment word public 'FAR_DATA' use16
     33DATA16_INIT_BSS ends
     34
     35;DATA16_INIT_GROUP   group DATA16_INIT, DATA16_INIT_CONST, DATA16_INIT_BSS
     36;
     37;A bad trick to make all the 16-bit data segments one
     38;
     39DATA16_GROUP    group DATA16, DATA16_CONST, DATA16_BSS, DATA16_GLOBAL, DATA16_INIT, DATA16_INIT_CONST, DATA16_INIT_BSS
    2140
    2241
    2342CODE16 segment word public 'CODE' use16
    2443CODE16 ends
     44
     45CODE16_INIT segment word public 'CODE' use16
     46CODE16_INIT ends
     47
     48CODE16_IOSEG segment word public 'CODE' use16
     49CODE16_IOSEG ends
    2550
    2651
     
    3358
    3459;DGROUP group BSS32, DATA32
    35 DGROUP group BSS32, DATA32, CONST32_RO, _VFT, EH_DATA
     60DGROUP group CALLTAB, BSS32, DATA32, CONST32_RO, _VFT, c_common, DDE4_DATA32, CTOR_DTOR1, CTOR_DTOR2, CTOR_DTOR3, EH_DATA
    3661
    3762DATA32  segment dword public 'DATA' use32
     
    4166c_common ends
    4267
     68DDE4_DATA32  segment dword public 'DATA' use32
     69DDE4_DATA32 ends
     70
    4371BSS32 segment dword public 'BSS' use32
    4472BSS32 ends
    4573
     74CTOR_DTOR1 segment dword public 'DATA' use32
     75CTOR_DTOR1 ends
     76
     77CTOR_DTOR2 segment dword public 'DATA' use32
     78CTOR_DTOR2 ends
     79
     80CTOR_DTOR3 segment dword public 'DATA' use32
     81CTOR_DTOR3 ends
    4682
    4783;CONSTGROUP group CONST32_RO, _VFT, EH_DATA
  • trunk/src/win32k/include/env.h

    r3412 r4164  
    1 /* $Id: env.h,v 1.2 2000-04-17 02:26:04 bird Exp $
     1/* $Id: env.h,v 1.3 2000-09-02 21:08:01 bird Exp $
    22 *
    33 * Environment access functions
     
    2121*******************************************************************************/
    2222const char *ScanEnv(const char *paszEnv, const char *pszVar);
    23 const char *GetEnv(void);
     23const char *GetEnv(BOOL fExecChild);
    2424
    2525
  • trunk/src/win32k/include/k32.h

    r2799 r4164  
    1 /* $Id: k32.h,v 1.2 2000-02-15 23:39:19 bird Exp $
     1/* $Id: k32.h,v 1.3 2000-09-02 21:08:02 bird Exp $
    22 *
    33 * k32 - definitions.
     
    2020*******************************************************************************/
    2121APIRET k32AllocMemEx(PPVOID ppb, ULONG cb, ULONG flag, ULONG ulCS, ULONG ulEIP);
     22APIRET k32QueryOTEs(HMTE hMTE, PQOTEBUFFER pQOte, ULONG cbOte);
     23APIRET k32QueryOptionsStatus(PK32OPTIONS pOptions, PK32STATUS pStatus);
     24APIRET k32SetOptions(PK32OPTIONS pOptions);
    2225
    2326
  • trunk/src/win32k/include/ldr.h

    r2501 r4164  
    1 /* $Id: ldr.h,v 1.5 2000-01-22 18:20:59 bird Exp $
    2  *
    3  * ldr - loader header file.
    4  *
    5  * Copyright (c)  1999 knut  St.  osmundsen
     1/* $Id: ldr.h,v 1.6 2000-09-02 21:08:02 bird Exp $
     2 *
     3 * ldr - Our loader "subsystem" public header file.
     4 *
     5 * Copyright (c) 2000 knut st. osmundsen (knut.stange.osmundsen@pmsc.no)
    66 *
    77 * Project Odin Software License can be found in LICENSE.TXT
     
    1212#ifndef _ldr_h_
    1313#define _ldr_h_
    14     #ifndef LDR_INCL_INITONLY
    15         /* state variable */
    16         extern BOOL fQAppType;
    17 
    18         /*
    19          * handle state - Array of handle states. Eight state per byte!
    20          */
    21         #define MAX_FILE_HANDLES 0x10000
    22 
    23         extern unsigned char achHandleStates[MAX_FILE_HANDLES/8];
    24 
    25         #define HSTATE_UNUSED       0x00    /* Handle not used (or OS/2). */
    26         #define HSTATE_OS2          0x00    /* OS/2 module filehandle. */
    27         #define HSTATE_OUR          0x01    /* Our module filehandle. */
    28         #define HSTATE_MASK         0xFE
    29         #define HSTATE_UMASK        0x01
    30 
    31         #define GetState(a)         (HSTATE_UMASK & (achHandleStates[(a)/8] >> ((a)%8)))
    32         #define SetState(a,b)       (achHandleStates[(a)/8] = (achHandleStates[(a)/8] & (HSTATE_MASK << ((a)%8) | HSTATE_MASK >> 8-((a)%8)) | ((b) & 0x1) << ((a)%8)))
    33 
    34 
    35         /*
    36          * Module struct.
    37          */
    38         typedef struct _Module
    39         {
    40             AVLNODECORE     coreKey;    /* Key is hFile. */
    41             AVLNODECORE     coreMTE;    /* Key is pMTE. */
    42 
    43             SFN             hFile;      /* System file number or file handle if you prefer that. */
    44             PMTE            pMTE;       /* Pointer to MTE if we got one - NULL is allowed. */
    45 
    46             ULONG           fFlags;     /* Flags. Flags if coreMte is in use and what Data contains. */
    47             union
    48             {
    49                 ModuleBase *pModule;    /* Pointer to a Pe2Lx object. (Win32 executables) */
    50                 #if defined(_PE2LX_H_)
    51                 Pe2Lx *     pPe2Lx;     /* Pointer to a Pe2Lx object. (Win32 executables) */
    52                 #endif
    53                 #if defined(_ELF2LX_H_)
    54                 Elf2Lx *    pElf2Lx;    /* Pointer to a Elf2Lx object. (ELF executables) */
    55                 #endif
    56                 #if defined(_SCRIPT_H_)
    57                 Script *    pScript;    /* Pointer to a Script object. (Shell scripts) */
    58                 #endif
    59                 #if defined(_PE_H_)
    60                 Pe *        pPe;        /* Pointer to a Pe object. (Ring3 loader) */
    61                 #endif
    62             } Data;                     /* Pointer to data. Currently it's allways a Pe2Lx object! */
    63         } MODULE, *PMODULE;
    64 
    65         #define MOD_FLAGS_IN_MTETREE    0x00000010UL /* The node is present in the MTE-tree. */
    66         #define MOD_TYPE_MASK           0x0000000FUL /* Type mask. */
    67         #define MOD_TYPE_PE2LX          0x00000001UL /* Pe2Lx module. */
    68         #define MOD_TYPE_ELF2LX         0x00000002UL /* Elf2Lx module. */
    69         #define MOD_TYPE_SCRIPT         0x00000003UL /* Script module. */
    70         #define MOD_TYPE_PE             0x00000004UL /* Pe module. */
    71 
    72 
    73         /*
    74          * Modules operations.
    75          */
    76         PMODULE     getModuleBySFN(SFN hFile);
    77         PMODULE     getModuleByMTE(PMTE pMTE);
    78         PMODULE     getModuleByFilename(PCSZ pszFilename);
    79 
    80         ULONG       addModule(SFN hFile, PMTE pMTE, ULONG fFlags, ModuleBase *pModObj);
    81         ULONG       removeModule(SFN hFile);
    82 
    83     #endif
    84 
    85     /*************/
    86     /* functions */
    87     /*************/
    88     #ifdef __cplusplus
    89     extern "C" {
    90     #endif
    91 
    92     ULONG ldrInit(void);
    93 
    94     #ifdef __cplusplus
     14
     15#ifdef __cplusplus
     16extern "C" {
     17#endif
     18
     19
     20#ifndef LDR_INCL_INITONLY
     21
     22/*
     23 * Fail if dependent header files is missing
     24 */
     25#ifndef _AVL_H_
     26#error "You'll have to include avl.h before ldr.h!"
     27#endif
     28
     29
     30/** @design Loader State.
     31 *
     32 * Used to determin behaviour in different cases.
     33 * Use the isLdrState<State> macros to query current state.
     34 * IMPORTANT! Don't change this variable if you don't really mean it!
     35 *            And only change it thru the setLdrState* macros!
     36 *
     37 * The state is changing as follows:
     38 *    1) Load a new program
     39 *      mytkExecPgm will set the state to LDRSTATE_TKEXECPGM on successful overloading.
     40 *          myldrOpenPath will set the type part of the loaderbits. (EXE,DLL or UNSUPPORTED)
     41 *          (NB! myldrOpenPath is called several times. First for the EXE then for imported modules.)
     42 *              IF executable THEN myLdrOpen might set the LDRSTATE_OUR flag.
     43 *          myldrOpenPath will reset the type part of the loaderbits upon return.
     44 *      mytkExecPgm resets the state to LDRSTATE_UNKNOWN upon return.
     45 *
     46 *    2) Query program type.
     47 *      myLDRQAppType will set the state to LDRSTATE_LDRQAPPTYPE on entry.
     48 *          myldrOpenPath will set the type part of the loaderbits. (EXE,DLL or UNSUPPORTED)
     49 *          (NB! myldrOpenPath may be called several times.)
     50 *              IF executable THEN myLdrOpen might set the LDRSTATE_OUR flag.
     51 *          myldrOpenPath will reset the type part of the loaderbits upon return.
     52 *      myLDRQAppType resets the state to LDRSTATE_UNKNOWN upon return.
     53 *
     54 *    3) Unknown invocation - probably DosLoadModule. Base state is LDRSTATE_UNKNOWN.
     55 *          myldrOpenPath will set the type part of the loaderbits. (EXE,DLL or UNSUPPORTED)
     56 *          (NB! myldrOpenPath is probably called several times. Import modules.)
     57 *          myldrOpenPath will reset the type part of the loaderbits upon return.
     58 *
     59 */
     60extern ULONG    ulLdrState;
     61
     62#define LDRSTATE_UNKNOWN        0       /* Default state - undertermined. */
     63#define LDRSTATE_TKEXECPGM      1       /* A program is being loaded. */
     64#define LDRSTATE_LDRQAPPTYPE    2       /* Loader called from LDRQAPPTYPE */
     65/*#define LDRSTATE_LOADMODULE     3 */  /* A module is being loaded by DosLoadModule. Not implemented! */
     66#define LDRSTATE_MASK           0x00FF  /* State mask. */
     67
     68/*
     69 * The following flags are only valid when myldrOpenPath is on the stack!, ie. in ldrOpen.
     70 * These flags is the "loading-bits".
     71 */
     72#define LDRSTATE_EXE            0x0100  /* Flags telling that an executable is being opened. */
     73#define LDRSTATE_DLL            0x0200  /* Flags telling that an dll is being opened. */
     74#define LDRSTATE_UNSUPPORTED    0x0300  /* Flags telling to not override this open call. */
     75#define LDRSTATE_TYPE_MASK      0x0f00  /* Load Type Mask. */
     76/* The following flag will tell us if the executable which is loading is ours or not. */
     77#define LDRSTATE_OUREXE         0x1000
     78#define LDRSTATE_LOADERBITS     0xff00  /* Mask */
     79
     80
     81/*
     82 * Query macros.
     83 */
     84#define isLdrStateUnknown()             ((ulLdrState & LDRSTATE_MASK) == LDRSTATE_UNKNOWN)
     85#define isLdrStateExecPgm()             ((ulLdrState & LDRSTATE_MASK) == LDRSTATE_TKEXECPGM)
     86#define isLdrStateQAppType()            ((ulLdrState & LDRSTATE_MASK) == LDRSTATE_LDRQAPPTYPE)
     87/*#define isLdrStateLoadModule()        ((ulLdrState & LDRSTATE_MASK) == LDRSTATE_LOADMODULE)*/
     88
     89#define isLdrStateLoadingEXE()          ((ulLdrState & LDRSTATE_TYPE_MASK) == LDRSTATE_EXE)
     90#define isLdrStateLoadingDLL()          ((ulLdrState & LDRSTATE_TYPE_MASK) == LDRSTATE_DLL)
     91#define isLdrStateLoadingUnsupported()  ((ulLdrState & LDRSTATE_TYPE_MASK) == LDRSTATE_UNSUPPORTED)
     92
     93#define isLdrStateLoadingOurEXE()       (ulLdrState & LDRSTATE_OUREXE)
     94
     95
     96/*
     97 * Set macros.
     98 */
     99#define setLdrStateQAppType()           ulLdrState = LDRSTATE_LDRQAPPTYPE
     100#define setLdrStateUnknown()            ulLdrState = LDRSTATE_UNKNOWN
     101/*      setLdrStateExecPgm() isn't needed as this is in assembly source! */
     102/*#define setLdrStateLoadModule()         ulLdrState = LDRSTATE_LOADMODULE */
     103
     104#define setLdrStateLoadingEXE()         ulLdrState = (ulLdrState & (ULONG)(~LDRSTATE_TYPE_MASK)) | LDRSTATE_EXE
     105#define setLdrStateLoadingDLL()         ulLdrState = (ulLdrState & (ULONG)(~LDRSTATE_TYPE_MASK)) | LDRSTATE_DLL
     106#define setLdrStateLoadingUnsupported() ulLdrState = (ulLdrState & (ULONG)(~LDRSTATE_TYPE_MASK)) | LDRSTATE_UNSUPPORTED
     107#define setLdrStateClearLoadingType()   ulLdrState &= (ULONG)(~LDRSTATE_TYPE_MASK)
     108
     109#define setLdrStateLoadingOurEXE()      ulLdrState |= LDRSTATE_OUREXE
     110
     111
     112/*
     113 * Loader State assert macros.
     114 */
     115#define ASSERT_LdrStateUnknown(fn)      ASSERT_LdrState(fn, LDRSTATE_UNKNOWN)
     116#define ASSERT_LdrStateExecPgm(fn)      ASSERT_LdrState(fn, LDRSTATE_TKEXECPGM)
     117#define ASSERT_LdrStateQAppType(fn)     ASSERT_LdrState(fn, LDRSTATE_LDRQAPPTYPE)
     118
     119#define ASSERT_LdrState(fn, state) \
     120    {                              \
     121        if ((ulLdrState & LDRSTATE_MASK) != (state)) \
     122        {                          \
     123            kprintf((fn ": assertion incorrect loader state. ulLdrState (%d) != " #state "(%d)", \
     124                     ulLdrState, state)); \
     125        }                          \
    95126    }
    96     #endif
    97 
    98     #pragma pack()
    99 
    100 #endif
     127
     128
     129/*
     130 * handle state - Array of handle states. Eight state per byte!
     131 */
     132#define MAX_FILE_HANDLES 0x10000
     133
     134extern unsigned char achHandleStates[MAX_FILE_HANDLES/8];
     135
     136#define HSTATE_UNUSED       0x00    /* Handle not used (or OS/2). */
     137#define HSTATE_OS2          0x00    /* OS/2 module filehandle. */
     138#define HSTATE_OUR          0x01    /* Our module filehandle. */
     139#define HSTATE_MASK         0xFE
     140#define HSTATE_UMASK        0x01
     141
     142#define GetState(a)         (HSTATE_UMASK & (achHandleStates[(a)/8] >> ((a)%8)))
     143#define SetState(a,b)       (achHandleStates[(a)/8] = (achHandleStates[(a)/8] & (HSTATE_MASK << ((a)%8) | HSTATE_MASK >> 8-((a)%8)) | ((b) & 0x1) << ((a)%8)))
     144
     145
     146/*
     147 * Declare the module classes used below in case they aren't declared yet.
     148 */
     149#ifdef __cplusplus
     150class ModuleBase;
     151class Pe2Lx;
     152class Elf2Lx;
     153#else
     154typedef char ModuleBase;
     155typedef char Pe2Lx;
     156typedef char Elf2Lx;
     157#endif
     158
     159
     160/*
     161 * Module struct.
     162 */
     163typedef struct _Module
     164{
     165    AVLNODECORE     coreKey;    /* Key is hFile. */
     166    AVLNODECORE     coreMTE;    /* Key is pMTE. */
     167
     168    SFN             hFile;      /* System file number or file handle if you prefer that. */
     169    PMTE            pMTE;       /* Pointer to MTE if we got one - NULL is allowed. */
     170
     171    ULONG           fFlags;     /* Flags. Flags if coreMte is in use and what Data contains. */
     172    union
     173    {
     174        ModuleBase *pModule;    /* Pointer to base module. */
     175        Pe2Lx *     pPe2Lx;     /* Pointer to a Pe2Lx object. (Win32 executables) */
     176        Elf2Lx *    pElf2Lx;    /* Pointer to a Elf2Lx object. (ELF executables) */
     177        #if 0
     178        Script *    pScript;    /* Pointer to a Script object. (Shell scripts) */
     179        Pe *        pPe;        /* Pointer to a Pe object. (Ring3 loader) */
     180        #endif
     181    } Data;                     /* Pointer to data. Currently it's allways a Pe2Lx object! */
     182} MODULE, *PMODULE;
     183
     184#define MOD_FLAGS_IN_MTETREE    0x00000010UL /* The node is present in the MTE-tree. */
     185#define MOD_TYPE_MASK           0x0000000FUL /* Type mask. */
     186#define MOD_TYPE_PE2LX          0x00000001UL /* Pe2Lx module. */
     187#define MOD_TYPE_ELF2LX         0x00000002UL /* Elf2Lx module. */
     188#define MOD_TYPE_SCRIPT         0x00000003UL /* Script module. */
     189#define MOD_TYPE_PE             0x00000004UL /* Pe module. */
     190
     191
     192/*
     193 * Pointer to the currently loading executable module.
     194 * Available at tkExecPgm time when loading a converted module.
     195 */
     196extern PMODULE pExeModule;
     197
     198
     199/*
     200 * Modules operations.
     201 */
     202PMODULE     getModuleBySFN(SFN hFile);
     203PMODULE     getModuleByMTE(PMTE pMTE);
     204PMODULE     getModuleByhMTE(HMTE hMTE);
     205PMODULE     getModuleByFilename(PCSZ pszFilename);
     206
     207ULONG       addModule(SFN hFile, PMTE pMTE, ULONG fFlags, ModuleBase *pModObj);
     208ULONG       removeModule(SFN hFile);
     209
     210
     211
     212/*
     213 * mytkExecPgm variables and functions
     214 *
     215 * (See ldr\mytkExecPgm.asm for further info on these variabels and functions.)
     216 */
     217#define CCHFILENAME     261             /* This is defined in mytkExecPgm.asm too. */
     218#define CCHARGUMENTS   1536             /* This is defined in mytkExecPgm.asm too. */
     219extern const char   fTkExecPgm;
     220extern char         achTkExecPgmFilename[CCHFILENAME];
     221extern char         achTkExecPgmArguments[CCHARGUMENTS];
     222#endif
     223ULONG _Optlink  tkExecPgmEnvLength(void);
     224ULONG _Optlink  tkExecPgmCopyEnv(char *pachBuffer, unsigned cchBuffer);
     225
     226
     227
     228/*
     229 * functions
     230 */
     231PSZ         ldrGetExePath(PSZ pszPath, BOOL fExecChild);
     232ULONG       ldrInit(void);
     233
     234#ifdef __cplusplus
     235}
     236#endif
     237
     238#pragma pack()
     239
     240#endif
  • trunk/src/win32k/include/log.h

    r2898 r4164  
    1 /* $Id: log.h,v 1.4 2000-02-25 18:15:04 bird Exp $
     1/* $Id: log.h,v 1.5 2000-09-02 21:08:02 bird Exp $
    22 *
    33 * log - C-style logging - kprintf.
     
    2525#define OUTPUT_COM1 0x3f8
    2626#define OUTPUT_COM2 0x2f8
     27#define OUTPUT_COM3 0x3e8
     28#define OUTPUT_COM4 0x2e8
    2729
    2830
     
    3234#define dprintf kprintf
    3335#if defined(DEBUG) && !defined(NOLOGGING)
    34     #ifndef INCL_16
     36    #ifdef INCL_16
     37        /* 16-bit */
     38        #include "vprntf16.h"
     39        #define kprintf(a)          printf16 a
     40        #define printf this function is not used in 16-bit code! Use printf16!
     41    #else
    3542        /* 32-bit */
    3643        #include <stdarg.h>
    3744        #include "vprintf.h"
    3845        #define kprintf(a)          printf a
    39     #else
    40         /* 16-bit */
    41         #include "vprntf16.h"
    42         #define kprintf(a)          printf16 a
    4346    #endif
    4447#else
    45     #define kprintf(a)              (void)0
     48    #define kprintf(a)              ((void)0)
    4649#endif
    4750
  • trunk/src/win32k/include/macros.h

    r3485 r4164  
    1 /* $Id: macros.h,v 1.2 2000-05-03 10:46:07 bird Exp $
     1/* $Id: macros.h,v 1.3 2000-09-02 21:08:02 bird Exp $
    22 *
    33 * Common macros for Win32k/Elf.
     
    2424#define ALIGN(a, alignment) (((a) + (alignment - 1UL)) & ~(alignment - 1UL))
    2525
     26/*
     27 * Not referenced parameter warning fix.
     28 */
     29#define NOREF(a) (a=a)
    2630
    2731/*
  • trunk/src/win32k/include/myExecPgm.h

    r2828 r4164  
    1 /* $Id: myExecPgm.h,v 1.1 2000-02-19 08:41:10 bird Exp $
     1/* $Id: myExecPgm.h,v 1.2 2000-09-02 21:08:03 bird Exp $
    22 *
    33 * Desclarations for buffer.asm and mytkExecPgm.
     
    1212#define _myExecPgm_h_
    1313
    14 /*******************************************************************************
    15 *   Defined Constants And Macros                                               *
    16 *******************************************************************************/
    17 #define CB_BUFFER   1536                /* This is to be updated in the files buffer.asm and tkExecPgm too! */
    18 #define CCH_FILENAME 261                /* This is to be updated in the files buffer.asm and tkExecPgm too! */
    19 
    20 
    21 /*******************************************************************************
    22 *   Structures and Typedefs                                                    *
    23 *******************************************************************************/
    24 #pragma pack(1)
    25 typedef struct _EXECPGMBUFFER
    26 {
    27     char szFilename[CCH_FILENAME];          /* Executable filename. */
    28     char achArgs[CB_BUFFER - CCH_FILENAME]; /* collection of ASCIIZ which ends with an empty string */
    29 } EXECPGMBUFFER, *PEXECPGMBUFFER;
    30 #pragma pack()
    31 
    32 
    33 /*******************************************************************************
    34 *   Functions Prototypes                                                       *
    35 *******************************************************************************/
    36 PEXECPGMBUFFER _Optlink QueryBufferPointerFromFilename(const char *pszFilename);
     14/* obsolete */
    3715
    3816#endif
  • trunk/src/win32k/include/omf.h

    r1678 r4164  
    1 /* $Id: omf.h,v 1.2 1999-11-10 01:45:33 bird Exp $ */
     1/* $Id: omf.h,v 1.3 2000-09-02 21:08:03 bird Exp $ */
    22/*
    33 * OMF stuff
     
    1616#define LIBEND      0xF1
    1717#define THEADR      0x80
    18 
    1918#define MODEND      0x8a
    2019#define MODEND2     0x8b
    21 
    2220#define COMENT      0x88
    2321#define     IMPDEF  0x01
    24 
     22#define PUBDEF      0x90
    2523#define LNAMES      0x96
     24#define SEGDEF      0x98
     25#define SEGDEF2     0x99
     26#define GRPDEF      0x9A
     27#define FIXUPP      0x9C
     28#define FIXUPP2     0x9D
     29#define LEDATA      0xA0
     30#define LEDATA2     0xA1
    2631
    2732#endif
  • trunk/src/win32k/include/options.h

    r2898 r4164  
    1 /* $Id: options.h,v 1.10 2000-02-25 18:15:06 bird Exp $
     1/* $Id: options.h,v 1.11 2000-09-02 21:08:03 bird Exp $
    22 *
    33 * Options.
     
    1616*******************************************************************************/
    1717/* fKernel */
    18 #define KF_UNI              0x00000000UL
    19 #define KF_SMP              0x00000001UL
     18#define KF_UNI              0x0000
     19#define KF_SMP              0x0001
     20#define KF_W4               0x0002
     21#define KF_DEBUG            0x1000
     22#define KF_HAS_DEBUGTYPE    0x2000
     23#define KF_ALLSTRICT        0x3000
     24#define KF_HALFSTRICT       0x7000
    2025
    2126/* fPE */
     
    3338
    3439/* default heapsizes */
    35 #define CB_SWP_INIT         (1024*512)      /* 512KB */
    36 #define CB_SWP_MAX          (1024*1024*16)  /*  16MB  */
    37 #define CB_RES_INIT         (1024*256)      /* 256KB */
    38 #define CB_RES_MAX          (1024*1024*10)  /*  10MB  */
     40#define CB_SWP_INIT         ((unsigned long)1024*512)      /* 512KB */
     41#define CB_SWP_MAX          ((unsigned long)1024*1024*16)  /*  16MB  */
     42#define CB_RES_INIT         ((unsigned long)1024*256)      /* 256KB */
     43#define CB_RES_MAX          ((unsigned long)1024*1024*10)  /*  10MB  */
    3944
    4045/* default assignments */
     
    4752            (unsigned short)~0,     /* usVerMajor    */     \
    4853            (unsigned short)~0,     /* usVerMinor    */     \
    49             FLAGS_PE_PE2LX,         /* fPE           */     \
     54            FLAGS_PE_MIXED,         /* fPE           */     \
    5055            INFOLEVEL_QUIET,        /* ulInfoLevel   */     \
    5156            FALSE,                  /* fElf          */     \
    52             TRUE,                   /* fScript       */     \
     57            TRUE,                   /* fUNIXScript   */     \
     58            TRUE,                   /* fREXXScript   */     \
     59            TRUE,                   /* fJava         */     \
    5360            FALSE,                  /* fNoLoader     */     \
    5461            CB_SWP_INIT,            /* cbSwpHeapInit */     \
     
    5764            CB_RES_MAX}             /* cbResHeapMax  */
    5865
     66#define isAnyLoaderEnabled()        (!options.fNoLoader && \
     67                                    (isPELoaderEnabled() || isELFEnabled() || isUNIXScriptEnabled() || isREXXScriptEnabled() || isJAVAEnabled()))
     68#define isPELoaderEnabled()         (options.fPE != FLAGS_PE_NOT)
     69#define isPELoaderDisabled()        (options.fPE == FLAGS_PE_NOT)
     70#define isPe2LxLoaderEnabled()      (options.fPE == FLAGS_PE_PE2LX)
     71#define isMixedPeLoaderEnabled()    (options.fPE == FLAGS_PE_MIXED)
     72
     73#define isELFDisabled()             (!options.fElf)
     74#define isELFEnabled()              (options.fElf)
     75#define isUNIXScriptDisabled()      (!options.fUNIXScript)
     76#define isUNIXScriptEnabled()       (options.fUNIXScript)
     77#define isREXXScriptDisabled()      (!options.fREXXScript)
     78#define isREXXScriptEnabled()       (options.fREXXScript)
     79#define isJAVADisabled()            (!options.fJava)
     80#define isJAVAEnabled()             (options.fJava)
     81
     82#define isSMPKernel()               (options.fKernel & KF_SMP)
     83#define isUNIKernel()               !(options.fKernel & KF_SMP)
    5984
    6085
     
    86111    ULONG       fElf;                   /* Elf flags. */
    87112
    88     /** @cat Options affecting the script executables */
    89     ULONG       fScript;                /* Script flags. */
     113    /** @cat Options affecting the UNIX script executables */
     114    ULONG       fUNIXScript;            /* UNIX script flags. */
    90115
    91     /** @cat Options affecting the script executables */
    92     ULONG       fNoLoader;              /* No loader stuff. */
     116    /** @cat Options affecting the REXX script executables */
     117    ULONG       fREXXScript;            /* REXX script flags. */
     118
     119    /** @cat Options affecting the JAVA executables */
     120    ULONG       fJava;                  /* Java flags. */
     121
     122    /** @cat Options affecting the  executables */
     123    ULONG       fNoLoader;              /* No loader stuff. !FIXME! We should import / functions even if this flag is set!!! */
    93124
    94125    /** @cat Options affecting the heap. */
     
    100131#pragma pack()
    101132
    102 
    103133/*******************************************************************************
    104134*   Global Variables                                                           *
    105135*******************************************************************************/
    106 extern struct options options;      /* defined in d32globals.c */
     136extern struct options DATA16_GLOBAL options;    /* defined in d16globals.c */
    107137#if defined(__IBMC__) || defined(__IBMCPP__)
    108138    #pragma map( options , "_options"  )
  • trunk/src/win32k/include/pe2lx.h

    r2925 r4164  
    1 /* $Id: pe2lx.h,v 1.9 2000-02-27 02:16:43 bird Exp $
     1/* $Id: pe2lx.h,v 1.10 2000-09-02 21:08:03 bird Exp $
    22 *
    33 * Pe2Lx class declarations. Ring 0 and Ring 3
     
    6666    ULONG  applyFixups(PMTE pMTE, ULONG iObject, ULONG iPageTable, PVOID pvPage,
    6767                       ULONG ulPageAddress, PVOID pvPTDA); /*(ldrEnum32bitRelRecs)*/
     68    ULONG  openPath(PCHAR pachFilename, USHORT cchFilename, ldrlv_t *pLdrLv, PULONG pful); /* (ldrOpenPath) */
     69    static ULONG  openPath2(PCHAR pachFilename, ULONG cchFilename, ldrlv_t *pLdrLv, PULONG pful, BOOL fOdin32PathValid);
    6870    #ifndef RING0
    6971    ULONG  testApplyFixups();
    7072    ULONG  writeFile(PCSZ pszLXFilename);
    7173    #endif
     74
     75    /** @cat public query methods */
     76    BOOL    isExe();
     77    BOOL    isDll();
     78    static SFN  getKernel32SFN()        {   return sfnKernel32;   }
     79    static VOID setKernel32SFN(SFN sfn) {   sfnKernel32 = sfn;    }
     80    static VOID invalidateOdin32Path();
     81    static LONG getLoadedModuleCount()  {   return cLoadedModules;}
    7282
    7383    /** @cat public Helper methods */
     
    120130    /** @cat static helpers */
    121131    static PCSZ queryOdin32ModuleName(PCSZ pszWin32ModuleName);
     132    static BOOL initOdin32Path();
     133    static BOOL setOdin32Path(const char *psz);
    122134
    123135    /** @cat static dump methods */
     
    195207        ULONG flFlags;                      /* equivalent object flags */
    196208    } paSecChars2Flags[];
     209
     210    static LONG             cLoadedModules; /* Count of existing objects. Updated by constructor and destructor. */
     211    static const char *     pszOdin32Path;  /* Odin32 base path (include a slash). */
     212    static ULONG            cchOdin32Path;  /* Odin32 base path length. */
     213    static SFN              sfnKernel32;    /* Odin32 Kernel32 filehandle. */
    197214};
    198215
  • trunk/src/win32k/include/probkrnl.h

    r3411 r4164  
    1 /* $Id: probkrnl.h,v 1.13 2000-04-17 01:56:49 bird Exp $
     1/* $Id: probkrnl.h,v 1.14 2000-09-02 21:08:04 bird Exp $
    22 *
    33 * Include file for ProbKrnl.
     
    1616*   Defined Constants And Macros                                               *
    1717*******************************************************************************/
    18 #define NBR_OF_KRNLIMPORTS      18      /* When this is changed make sure to   */
     18#define NBR_OF_KRNLIMPORTS      42      /* When this is changed make sure to   */
    1919                                        /* update the arrays in d32init.c and  */
    20                                         /* probkrnl.c */
     20                                        /* probkrnl.c, make test faker in      */
     21                                        /* test.h and the appropriate fake.c   */
     22                                        /* fakea.asm.                          */
    2123#define MAX_LENGTH_NAME         32      /* Max length for the function. */
    2224
     
    2426#define EPT_PROC                0x00    /* procedure - overload procedure*/
    2527#define EPT_PROCIMPORT          0x01    /* procedure 32bit - import only */
    26 #define EPT_VARIMPORT           0x02    /* variable/non-procedure 32bit - not implemented yet */
    27 #define EPT_32BIT               0x00    /* 16 bit entry-point  */
    28 #define EPT_16BIT               0x80    /* 32 bit entry-point */
     28#define EPT_VARIMPORT           0x02    /* variable/non-procedure 32bit */
     29#define EPT_NOT_REQ             0x04    /* Not required flag. */
     30#define EPT_32BIT               0x00    /* 32 bit entry-point  */
     31#define EPT_16BIT               0x80    /* 16 bit entry-point */
    2932#define EPT_BIT_MASK            0x80    /* Mask bit entry-point */
    3033#define EPT16BitEntry(a)    (((a).fType & EPT_BIT_MASK) == EPT_16BIT)
     
    3437#define EPT_PROC32              (EPT_PROC | EPT_32BIT)
    3538#define EPT_PROCIMPORT32        (EPT_PROCIMPORT | EPT_32BIT)
     39#define EPT_PROCIMPORTNR32      (EPT_PROCIMPORT | EPT_32BIT | EPT_NOT_REQ)
    3640#define EPT_VARIMPORT32         (EPT_VARIMPORT | EPT_32BIT)
    3741
     
    4145#define EPT_VARIMPORT16         (EPT_VARIMPORT | EPT_16BIT)
    4246
    43 /* Kernel type: SMP/UNI/W4 */
    44 #define TYPE_UNI                0       /* Any UNI processor kernel except Warp 4 fp13 and above. */
    45 #define TYPE_SMP                1       /* SMP Warp3 Adv. or Warp 4.5 SMP */
    46 #define TYPE_W4                 2       /* Warp4 fp13 and above. */
     47
     48/* Kernel type: SMP/UNI/W4 (flags matches KF_* in options.h)  */
     49#if 0
     50#define TYPE_UNI                0x00     /* Any UNI processor kernel except Warp 4 fp13 and above. */
     51#define TYPE_SMP                0x01     /* SMP Warp3 Adv. or Warp 4.5 SMP */
     52#define TYPE_W4                 0x02     /* Warp4 fp13 and above. */
     53#endif
    4754
    4855
     
    7380{
    7481    unsigned short usBuild;             /* Build number */
    75     unsigned char  fchBldType;          /* R, H, A */
    76     unsigned char  fchType;             /* TYPE_SMP, TYPE_UNI, TYPE_W4 */
     82    unsigned short fKernel;             /* Kernel flag (KF_* defines in options.h). */
    7783    unsigned char  cObjects;            /* Count of objects */
    7884    struct
     
    9197*   NOTE! These are only available at init time!                               *
    9298*******************************************************************************/
    93 extern IMPORTKRNLSYM _aImportTab[NBR_OF_KRNLIMPORTS]; /* 'aImportTab' in PrbKrnl.c */
    94 extern unsigned short int _usBuild;     /* 'ulBuild'         in PrbKrnl.c */
    95 extern unsigned short int _usVerMajor;  /* 'usVerMajor'      in PrbKrnl.c */
    96 extern unsigned short int _usVerMinor;  /* 'usVerMinor'      in PrbKrnl.c */
    97 extern KRNLDBENTRY aKrnlSymDB[];        /* defined in symdb.c (for 16-bit usage) */
    98 extern KRNLDBENTRY _aKrnlSymDB[];       /* defined in symdb.c (for 32-bit usage) */
     99extern IMPORTKRNLSYM DATA16_GLOBAL  aImportTab[NBR_OF_KRNLIMPORTS]; /* Defined in ProbKrnl.c */
     100extern char          DATA16_GLOBAL  szUsrSym[50];                   /* Defined in ProbKrnl.c */
     101extern KRNLDBENTRY   DATA16_INIT    aKrnlSymDB[];                   /* Defined in symdb.c (for 16-bit usage) */
    99102
     103#if defined(__IBMC__) || defined(__IBMCPP__)
     104    #pragma map( aImportTab , "_aImportTab" )
     105    #pragma map( szUsrSym   , "_szUsrSym"   )
     106    #pragma map( aKrnlSymDB , "_aKrnlSymDB" )
     107#endif
    100108
    101109#if defined(INCL_16) && defined(MAX_DISKDD_CMD) /* 16-bit only */
    102110int ProbeKernel(PRPINITIN pReqPack);
     111
     112#if 0 /*ndef CODE16_INIT*/
     113#pragma alloc_text(CODE16_INIT, ProbeKernel)
    103114#endif
    104115
    105116#endif
    106117
     118#endif
     119
  • trunk/src/win32k/include/rmalloc.h

    r2506 r4164  
    1 /* $Id: rmalloc.h,v 1.2 2000-01-24 01:44:08 bird Exp $
     1/* $Id: rmalloc.h,v 1.3 2000-09-02 21:08:04 bird Exp $
    22 *
    33 * Resident Heap.
     
    2020#endif
    2121/* XLATON */
     22/*******************************************************************************
     23*   Structures and Typedefs                                                    *
     24*******************************************************************************/
     25typedef struct HeapState_s  /* note: this is used by both swappable and resident heaps */
     26{
     27    ULONG       cbHeapSize;          /* Amount of memory used by the heap free and used++. */
     28    ULONG       cbHeapFree;          /* Amount of used space. */
     29    ULONG       cbHeapUsed;          /* Amount of free space reserved. */
     30    ULONG       cBlocksUsed;         /* Count of used blocks. */
     31    ULONG       cBlocksFree;         /* Count of free blocks. */
     32} HEAPSTATE, *PHEAPSTATE;
     33
    2234
    2335/*******************************************************************************
     
    3345int         _res_validptr2(void *, unsigned);
    3446unsigned    _res_memfree(void);
     47unsigned    _res_memused(void);
     48int         _res_state(PHEAPSTATE);
    3549int         _res_heap_check(void);
    3650void        _res_heapmin(void);
    3751void        _res_dump_subheaps(void);
    3852void        _res_dump_allocated(unsigned);
     53
     54extern unsigned cbResHeapMax;           /* Maximum amount of memory used by the heap. */
     55
    3956
    4057/* XLATOFF */
  • trunk/src/win32k/include/smalloc.h

    r2506 r4164  
    1 /* $Id: smalloc.h,v 1.1 2000-01-24 01:44:08 bird Exp $
     1/* $Id: smalloc.h,v 1.2 2000-09-02 21:08:04 bird Exp $
    22 *
    33 * Swappable Heap.
     
    2121/* XLATON */
    2222
     23struct HeapState_s;
     24
    2325/*******************************************************************************
    2426*   Exported Functions and Variables                                           *
     
    3335int         _swp_validptr2(void *, unsigned);
    3436unsigned    _swp_memfree(void);
     37unsigned    _swp_memused(void);
     38int         _swp_state(struct HeapState_s *);
    3539int         _swp_heap_check(void);
    3640void        _swp_heapmin(void);
    3741void        _swp_dump_subheaps(void);
    3842void        _swp_dump_allocated(unsigned);
     43
     44extern unsigned cbSwpHeapMax;   /* Maximum amount of memory used by the heap. */
    3945
    4046/* XLATOFF */
  • trunk/src/win32k/include/test.h

    r3829 r4164  
    1 /* $Id: test.h,v 1.1 2000-07-16 22:17:13 bird Exp $
     1/* $Id: test.h,v 1.2 2000-09-02 21:08:04 bird Exp $
    22 *
    33 * Definitions and declarations for test moduls.
     
    9393    PULONG  pulAddr,
    9494    PUSHORT pushPTDA);
    95 ULONG LDRCALL fakeldrOpenPath(PCHAR pachFilename, USHORT cchFilename, ldrlv_t *plv, PULONG pful);
    96 ULONG LDRCALL fakeLDRClearSem(void);
    97 ULONG KRNLCALL fakeKSEMRequestMutex(HKMTX hkmtx, ULONG ulTimeout);
    98 extern HKMTX        fakeLDRSem;
    99 ULONG KRNLCALL   fakeTKFuBuff(PVOID pv, PVOID pvUsr, ULONG cb, ULONG fl);
    100 ULONG KRNLCALL   fakeTKSuBuff(PVOID pvUsr, PVOID pv, ULONG cb, ULONG fl);
    101 ULONG KRNLCALL   fakeTKFuBufLen(PLONG pcch, PVOID pvUsr, ULONG cchMax, ULONG fl, BOOL fDblNULL);
    102 PMTE LDRCALL  fakeldrValidateMteHandle(HMTE hMTE);
    103 void _Optlink fakeg_tkExecPgm(void);    /* Not callable! (fakea.asm) */
    104 void _Optlink fakef_FuStrLenZ(void);    /* Not callable! (fakea.asm) */
    105 void _Optlink fakef_FuStrLen(void);     /* Not callable! (fakea.asm) */
    106 void _Optlink fakef_FuBuff(void);       /* Not callable! (fakea.asm) */
     95PMTE KRNLCALL fakeldrASMpMTEFromHandle(
     96    HMTE  hMTE);
     97ULONG LDRCALL   fakeldrOpenPath(PCHAR pachFilename, USHORT cchFilename, ldrlv_t *plv, PULONG pful);
     98ULONG LDRCALL   fakeLDRClearSem(void);
     99ULONG LDRCALL   fakeldrFindModule(PCHAR pachFilename, USHORT cchFilename, USHORT usClass, PPMTE ppMTE);
     100ULONG KRNLCALL  fakeKSEMRequestMutex(HKSEMMTX hkmtx, ULONG ulTimeout);
     101ULONG KRNLCALL  fakeKSEMReleaseMutex(HKSEMMTX hkmtx);
     102BOOL  KRNLCALL  fakeKSEMQueryMutex(HKSEMMTX hkmtx, PUSHORT pcusNest);
     103VOID  KRNLCALL  fakeKSEMInit(PKSEM pksem, ULONG fulType, ULONG fulFlags);
     104extern KSEMMTX  fakeLDRSem;
     105extern char *   fakeLDRLibPath;
     106ULONG KRNLCALL  fakeTKFuBuff(PVOID pv, PVOID pvUsr, ULONG cb, ULONG fl);
     107ULONG KRNLCALL  fakeTKSuBuff(PVOID pvUsr, PVOID pv, ULONG cb, ULONG fl);
     108ULONG KRNLCALL  fakeTKFuBufLen(PLONG pcch, PVOID pvUsr, ULONG cchMax, ULONG fl, BOOL fDblNULL);
     109PMTE LDRCALL    fakeldrValidateMteHandle(HMTE hMTE);
     110PSZ  SECCALL    fakeSecPathFromSFN(SFN hFile);
     111void _Optlink   fakeg_tkExecPgm(void);    /* Not callable! (fakea.asm) */
     112void _Optlink   fake_tkStartProcess(void);/* Not callable! (fakea.asm) */
     113void _Optlink   fakef_FuStrLenZ(void);    /* Not callable! (fakea.asm) */
     114void _Optlink   fakef_FuStrLen(void);     /* Not callable! (fakea.asm) */
     115void _Optlink   fakef_FuBuff(void);       /* Not callable! (fakea.asm) */
    107116extern PTCB     fakepTCBCur;
    108117extern PPTDA    fakepPTDACur;
    109118extern char     fakeptda_start;
    110119extern USHORT   fakeptda_environ;
     120extern KSEMMTX  fakeptda_ptdasem;
     121extern HMTE     fakeptda_module;
     122extern PSZ      fakeptda_pBeginLIBPATH;
     123extern PSZ      fakeldrpFileNameBuf;
    111124
    112125#endif /* INCL_NO_FAKE */
    113126
    114127#ifdef INCL_16
    115 extern USHORT  usFakeVerMajor;          /* define in probkrnl.c */
    116 extern USHORT  usFakeVerMinor;          /* define in probkrnl.c */
     128extern USHORT   usFakeVerMajor;         /* define in probkrnl.c */
     129extern USHORT   usFakeVerMinor;         /* define in probkrnl.c */
    117130#else
    118 extern USHORT  _usFakeVerMajor;
    119 extern USHORT  _usFakeVerMinor;
     131extern USHORT   _usFakeVerMajor;
     132extern USHORT   _usFakeVerMinor;
    120133#endif
    121134
    122 extern const char *pszInternalRevision; /* defined in win32ktst.c */
     135#ifdef _OS2Krnl_h_
     136extern int      cObjectsFake;           /* defined in win32ktst.c */
     137extern OTE      aKrnlOTE[24];           /* defined in win32ktst.c */
     138#endif
    123139
    124140#ifdef __cplusplus
  • trunk/src/win32k/include/vprntf16.h

    r2898 r4164  
    1 /* $Id: vprntf16.h,v 1.1 2000-02-25 18:15:06 bird Exp $
     1/* $Id: vprntf16.h,v 1.2 2000-09-02 21:08:04 bird Exp $
    22 *
    33 * printf/vprintf header file - 16bit.
     
    3030 * Function prototypes
    3131 */
    32 int printf16(const char *pszFormat, ...);
    33 int vprintf16(const char *pszFormat, va_list args);
     32int FAR printf16(const char *pszFormat, ...);
     33int FAR vprintf16(const char *pszFormat, va_list args);
     34
     35/*#pragma alloc_text(CODE16, printf16, vprintf16)*/
    3436
    3537
  • trunk/src/win32k/include/win32k.h

    r2918 r4164  
    1 /* $Id: win32k.h,v 1.4 2000-02-26 20:21:42 bird Exp $
     1/* $Id: win32k.h,v 1.5 2000-09-02 21:08:00 bird Exp $
    22 *
    33 * Top level make file for the Win32k library.
     
    2525 */
    2626#define K32_ALLOCMEMEX          0x01
    27 
     27#define K32_QUERYOTES           0x02
     28#define K32_QUERYOPTIONSSTATUS  0x03
     29#define K32_SETOPTIONS          0x04
    2830
    2931/*
     
    3638*   Structures and Typedefs                                                    *
    3739*******************************************************************************/
     40#pragma pack(1)
     41
     42/*
     43 * Object Table Entry buffer.
     44 */
     45typedef struct _QueryOTE
     46{
     47    ULONG   ote_size;                   /* Object virtual size */
     48    ULONG   ote_base;                   /* Object base virtual address */
     49    ULONG   ote_flags;                  /* Attribute flags */
     50    ULONG   ote_pagemap;                /* Object page map index */
     51    ULONG   ote_mapsize;                /* Num of entries in obj page map */
     52  /*ULONG   ote_reserved;*/
     53    USHORT  ote_sel;                    /* Object Selector */
     54    USHORT  ote_hob;                    /* Object Handle */
     55} QOTE, *PQOTE;
     56
     57typedef struct _QueryOTEBuffer
     58{
     59    ULONG   cOTEs;                      /* Number of entries in aOTE. */
     60    QOTE    aOTE[1];                    /* Array of OTEs. */
     61} QOTEBUFFER, *PQOTEBUFFER;
     62
     63
     64/*
     65 * Options struct.
     66 *
     67 * (The function of these members are described in options.h in
     68 *  the src\win32k\include directory.)
     69 * All members of this struct (except cb ofcourse) is changable.
     70 */
     71typedef struct _K32Options
     72{
     73    ULONG   cb;
     74
     75    /** @cat logging options */
     76    USHORT      usCom;                  /* Output port no. */
     77    ULONG       fLogging;               /* Logging. */
     78
     79    /** @cat Options affecting the generated LX executables */
     80    ULONG       fPE;                    /* Flags set the type of conversion. */
     81    ULONG       ulInfoLevel;            /* Pe2Lx InfoLevel. */
     82
     83    /** @cat Options affecting the generated ELF executables */
     84    ULONG       fElf;                   /* Elf flags. */
     85
     86    /** @cat Options affecting the UNIX script executables */
     87    ULONG       fUNIXScript;            /* UNIX script flags. */
     88
     89    /** @cat Options affecting the REXX script executables */
     90    ULONG       fREXXScript;            /* REXX script flags. */
     91
     92    /** @cat Options affecting the JAVA executables */
     93    ULONG       fJava;                  /* Java flags. */
     94
     95    /** @cat Options affecting the  executables */
     96    ULONG       fNoLoader;              /* No loader stuff. !FIXME! We should import / functions even if this flag is set!!! */
     97
     98    /** @cat Options affecting the heap. */
     99    ULONG       cbSwpHeapMax;           /* Maximum heapsize. */
     100    ULONG       cbResHeapMax;           /* Maxiumem residentheapsize. */
     101} K32OPTIONS, *PK32OPTIONS;
     102
     103
     104/*
     105 * Status struct.
     106 *
     107 */
     108typedef struct _K32Status
     109{
     110    ULONG   cb;
     111
     112    /** @cat Options status. */
     113    ULONG       fQuiet;                 /* Quiet initialization. */
     114
     115    /** @cat Kernel status. */
     116    ULONG       fKernel;                /* Smp or uni kernel. */
     117    ULONG       ulBuild;                /* Kernel build. */
     118    USHORT      usVerMajor;             /* OS/2 major ver - 20 */
     119    USHORT      usVerMinor;             /* OS/2 minor ver - 30,40 */
     120
     121    /** @cat Heap status. */
     122    ULONG       cbSwpHeapInit;          /* Initial heapsize. */
     123    ULONG       cbSwpHeapFree;          /* Amount of used space. */
     124    ULONG       cbSwpHeapUsed;          /* Amount of free space reserved. */
     125    ULONG       cbSwpHeapSize;          /* Amount of memory used by the heap free and used++. */
     126    ULONG       cSwpBlocksUsed;         /* Count of used blocks. */
     127    ULONG       cSwpBlocksFree;         /* Count of free blocks. */
     128
     129    ULONG       cbResHeapInit;          /* Initial heapsize. */
     130    ULONG       cbResHeapFree;          /* Amount of free space reserved. */
     131    ULONG       cbResHeapUsed;          /* Amount of used space. */
     132    ULONG       cbResHeapSize;          /* Amount of memory used by the heap free and used++. */
     133    ULONG       cResBlocksUsed;         /* Count of used blocks. */
     134    ULONG       cResBlocksFree;         /* Count of free blocks. */
     135
     136    /** @cat Win32k build, version and init stuff */
     137    CHAR        szBuildDate[12];        /* Date of the win32k build. (Sep 02 2000) */
     138    CHAR        szBuildTime[9];         /* Time of the win32k build. (11:44:21) */
     139    ULONG       ulVersion;              /* Win32k version */
     140    CHAR        szSymFile[CCHMAXPATH];  /* The name of the symbol file or sym database. */
     141
     142    /** @cat Statistics */
     143    ULONG       cPe2LxModules;          /* Number of Pe2Lx modules currently loaded. */
     144    ULONG       cElf2LxModules;         /* Number of Elf2Lx modules currently loaded. */
     145    /*...*/
     146} K32STATUS, *PK32STATUS;
     147
     148
     149
    38150/*
    39151 * K32 category parameter structs
     
    51163} K32ALLOCMEMEX, *PK32ALLOCMEMEX;
    52164
    53 
    54 
    55 
    56 #ifdef INCL_WIN32K_LIB
     165typedef struct _k32QueryOTEs
     166{
     167    HMODULE     hMTE;                   /* Module handle. */
     168    PQOTEBUFFER pQOte;                  /* Pointer to output buffer. */
     169    ULONG       cbQOte;                 /* Size of the buffer pointed to by pQOte  */
     170    ULONG       rc;                     /* Return code. */
     171} K32QUERYOTES, *PK32QUERYOTES;
     172
     173typedef struct _k32QueryOptionsStatus
     174{
     175    PK32OPTIONS     pOptions;           /* Pointer to option struct. (NULL allowed) */
     176    PK32STATUS      pStatus;            /* Pointer to status struct. (NULL allowed) */
     177    ULONG           rc;                 /* Return code. */
     178} K32QUERYOPTIONSSTATUS, *PK32QUERYOPTIONSSTATUS;
     179
     180typedef struct _k32SetOptions
     181{
     182    PK32OPTIONS     pOptions;           /* Pointer to option struct. (NULL allowed) */
     183    ULONG           rc;                 /* Return code. */
     184} K32SETOPTIONS, *PK32SETOPTIONS;
     185
     186
     187#pragma pack()
     188
     189#ifndef NO_WIN32K_LIB_FUNCTIONS
    57190/*******************************************************************************
    58191*   External Functions                                                         *
    59192*******************************************************************************/
     193/* Win32k APIs */
    60194APIRET APIENTRY  libWin32kInit(void);
    61195APIRET APIENTRY  libWin32kTerm(void);
     196BOOL   APIENTRY  libWin32kInstalled(void);
     197APIRET APIENTRY  libWin32kQueryOptionsStatus(PK32OPTIONS pOptions, PK32STATUS pStatus);
     198APIRET APIENTRY  libWin32kSetOptions(PK32OPTIONS pOptions);
     199
     200/* "Extra OS2 APIs" */
     201APIRET APIENTRY  DosAllocMemEx(PPVOID ppv, ULONG cb, ULONG flag);
     202APIRET APIENTRY  W32kQueryOTEs(HMODULE hMTE, PQOTEBUFFER pQOte, ULONG cbQOte);
     203
     204/* Helper function */
    62205USHORT APIENTRY  libHelperGetCS(void);
    63 APIRET APIENTRY  DosAllocMemEx(PPVOID ppv, ULONG cb, ULONG flag);
    64206
    65207
Note: See TracChangeset for help on using the changeset viewer.