Changeset 4972 for trunk/src


Ignore:
Timestamp:
Jan 19, 2001, 3:28:53 AM (25 years ago)
Author:
bird
Message:

Added support for kernel revisions. (like 14062a)

Location:
trunk/src/win32k
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/win32k/dev16/extract.c

    r4787 r4972  
    1 /* $Id: extract.c,v 1.3 2000-12-11 06:53:48 bird Exp $
     1/* $Id: extract.c,v 1.4 2001-01-19 02:27:32 bird Exp $
    22 *
    33 * Description:     SymDB entry generator.
    44 *                  Builds SymDB entry from one or more symbol files.
    55 *
    6  * Copyright (c) 2000 knut st. osmundsen (knut.stange.osmundsen@mynd.no)
     6 * Copyright (c) 2000-2001 knut st. osmundsen (knut.stange.osmundsen@mynd.no)
    77 *
    88 * Project Odin Software License can be found in LICENSE.TXT
     
    8282 * Dumps writes a KRNLDBENTRY struct to stderr for the given .sym-file.
    8383 * The filesnames are on this format:
    84  *    nnnn[n]tm.SYM
     84 *    nnnn[n]tm[r].SYM
    8585 * Where: n - are the build number 4 or 5 digits.
    8686 *        t - kernel type. R = retail, H = half strict, A = all strict.
    8787 *        m - UNI or SMP.  U = UNI processor kernel. S = SMP processor kernel. 4 = Warp 4 FP13+
     88 *        r - revision letter. Currently only 'A' is supported.
    8889 * @returns   NO_ERROR on success. Untracable error code on error.
    8990 * @param     pszFilename  Pointer to read only filename of the .sym-file.
     
    9697    APIRET   rc;
    9798    int      cch;
     99    int      cchNum;
    98100    const char *psz = pszFilename + kstrlen(pszFilename);
    99101
     
    110112
    111113    /* Filename check */
    112     if (cch < 10 || cch > 11
     114    cchNum = psz[0] > '2' ? 4 : 5;      /* build number length. */
     115    if (cch < 10 || cch > 12
    113116        || !(psz[0] >= '0' && psz[0] <= '9')
    114117        || !(psz[1] >= '0' && psz[1] <= '9')
    115118        || !(psz[2] >= '0' && psz[2] <= '9')
    116119        || !(psz[3] >= '0' && psz[3] <= '9')
    117         || !(psz[cch-7] >= '0' && psz[cch-7] <= '9')
    118         || !(psz[cch-6] == 'A' || psz[cch-6] == 'H' || psz[cch-6] == 'R')
    119         || !(psz[cch-5] == 'S' || psz[cch-5] == 'U' || psz[cch-5] == '4')
     120        || !(cchNum == 4 || (psz[4] >= '0' && psz[4] <= '9'))
     121        || !(psz[cchNum] == 'A' || psz[cchNum] == 'H' || psz[cchNum] == 'R')
     122        || !(psz[cchNum+1] == 'S' || psz[cchNum+1] == 'U' || psz[cchNum+1] == '4')
     123/*        || !(cch != 12 || psz[cchNum+2] == 'A') */
    120124        )
    121125    {
     
    142146         * is enclaved within an "#ifdef ALLKERNELS ... #endif".
    143147         */
    144         if (psz[cch-6] != 'R')
     148        if (psz[cchNum] != 'R')
    145149            printf16("#ifdef ALLKERNELS\n");
    146150
     
    148152                 "        %.*s, ",
    149153                 psz,
    150                  cch - 6, &psz[0]       /* build number */
     154                 cchNum, &psz[0]       /* build number */
    151155                 );
    152156
    153         switch (psz[cch - 5])
     157        switch (psz[cchNum + 1])
    154158        {
    155159            case 'S':   printf16("KF_SMP"); break;
     
    157161            case 'U':   printf16("KF_UNI"); break;
    158162        }
    159         switch (psz[cch - 6])
     163        switch (psz[cchNum])
    160164        {
    161165            case 'A':   printf16(" | KF_ALLSTRICT"); break;
    162166            case 'H':   printf16(" | KF_HALFSTRICT"); break;
    163167        }
     168        if (psz[cchNum + 2] == 'A')
     169            printf16(" | KF_REV_A");
     170
    164171        printf16(", %d,\n"
    165172                 "        {\n",
     
    183190         * is enclaved within an "#ifdef ALLKERNELS ... #endif".
    184191         */
    185         if (psz[cch-6] != 'R')
     192        if (psz[cchNum] != 'R')
    186193            printf16("#endif\n");
    187194    }
     
    245252        int         i;
    246253
    247         printf16("/* $Id: extract.c,v 1.3 2000-12-11 06:53:48 bird Exp $\n"
     254        printf16("/* $Id: extract.c,v 1.4 2001-01-19 02:27:32 bird Exp $\n"
    248255                 "*\n"
    249256                 "* Autogenerated kernel symbol database.\n"
  • trunk/src/win32k/dev32/d32init.c

    r4828 r4972  
    1 /* $Id: d32init.c,v 1.28 2000-12-17 22:45:50 bird Exp $
     1/* $Id: d32init.c,v 1.29 2001-01-19 02:28:07 bird Exp $
    22 *
    33 * d32init.c - 32-bits init routines.
     
    335335    kprintf(("\tCom port no.%03xh\n", options.usCom));
    336336
    337     kprintf(("\tKernel: v%d.%d  build %d  type ",
     337    kprintf(("\tKernel: v%d.%d  build %d%c type ",
    338338                options.usVerMajor,
    339339                options.usVerMinor,
    340                 options.ulBuild));
     340                options.ulBuild,
     341                (options.fKernel & KF_REV_MASK)
     342                    ? ((options.fKernel & KF_REV_MASK) >> KF_REV_SHIFT) + 'a'-1
     343                    : ' '
     344                ));
    341345    if (options.fKernel & KF_SMP)
    342346        kprintf(("SMP "));
     
    546550                                if (   !(pKrnlInfo->ulBuild >=  8254 && pKrnlInfo->ulBuild <  8383) /* Warp 3 fp 32 -> fp 60 */
    547551                                    && !(pKrnlInfo->ulBuild >=  9023 && pKrnlInfo->ulBuild <= 9036) /* Warp 4 GA -> fp 12 */
    548                                     && !(pKrnlInfo->ulBuild >= 14039 && pKrnlInfo->ulBuild < 14080) /* Warp 4.5 GA -> fp 40 */
     552                                    && !(pKrnlInfo->ulBuild >= 14039 && pKrnlInfo->ulBuild < 14100) /* Warp 4.5 GA -> fp 40 */
    549553                                    && !(pKrnlInfo->ulBuild >=  6600 && pKrnlInfo->ulBuild <= 6678) /* Warp 2.1x fix?? (just for fun!) */
    550554                                      )
     
    555559                                }
    556560
     561                                /* Check for any revision flag */
     562                                pKrnlInfo->fKernel = 0;
     563                                if (*psz == 'A' || *psz == 'a')
     564                                {
     565                                    pKrnlInfo->fKernel = (*psz - (*psz >= 'a' ? 'a'-1 : 'A'-1)) << KF_REV_SHIFT;
     566                                    psz++;
     567                                }
     568                                if (*psz == 'F' || *psz == 'f' || *psz == ',') /* These are ignored! */
     569                                    *psz++;
     570
    557571                                /* If this is an Aurora/Warp 4.5 or Warp 3 kernel there is more info! */
    558                                 if ((psz[0] != ',' && psz[1] == '_' && (psz[2] == 'S' || psz[2] == 's'))  /* F_SMP */
    559                                     || (psz[0] == '_' && (psz[1] == 'S' || psz[1] == 's'))  /* _SMP  */
    560                                     )
    561                                     pKrnlInfo->fKernel = KF_SMP;
     572                                if (psz[0] == '_' && (psz[1] == 'S' || psz[1] == 's'))  /* _SMP  */
     573                                    pKrnlInfo->fKernel |= KF_SMP;
    562574                                else
    563575                                    if (*psz != ','
    564576                                        && (   (psz[0] == '_' && psz[1] == 'W' && psz[2] == '4')  /* _W4 */
    565                                             || (psz[1] == '_' && psz[2] == 'W' && psz[3] == '4')  /* A_W4 */
    566577                                            || (psz[0] == '_' && psz[1] == 'U' && psz[2] == 'N' && psz[3] == 'I' && psz[4] == '4')  /* _UNI4 */
    567                                             || (psz[1] == '_' && psz[2] == 'U' && psz[3] == 'N' && psz[4] == 'I' && psz[5] == '4')  /* A_UNI4 */
    568578                                            )
    569579                                        )
    570                                     pKrnlInfo->fKernel = KF_W4 | KF_UNI;
     580                                    pKrnlInfo->fKernel |= KF_W4 | KF_UNI;
    571581                                else
    572                                     pKrnlInfo->fKernel = KF_UNI;
     582                                    pKrnlInfo->fKernel |= KF_UNI;
    573583
    574584
     
    592602
    593603                                /* Display info */
    594                                 kprintf(("GetKernelInfo32: info summary: Build %d, fKernel=%d\n",
     604                                kprintf(("GetKernelInfo32: info summary: Build %d, fKernel=0x%x\n",
    595605                                         pKrnlInfo->ulBuild, pKrnlInfo->fKernel));
    596606
  • trunk/src/win32k/include/options.h

    r4880 r4972  
    1 /* $Id: options.h,v 1.15 2001-01-08 18:05:26 bird Exp $
     1/* $Id: options.h,v 1.16 2001-01-19 02:28:53 bird Exp $
    22 *
    33 * Options.
     
    2121#define KF_SMP              0x0001
    2222#define KF_W4               0x0002
     23#define KF_REV_MASK         0x0FF0
     24#define KF_REV_SHIFT        4
     25#define KF_REV_0            0x0000
     26#define KF_REV_A            0x0010
     27#define KF_REV_B            0x0020
     28#define KF_REV_C            0x0030
     29#define KF_REV_ECS          0x0040
    2330#define KF_DEBUG            0x1000
    2431#define KF_HAS_DEBUGTYPE    0x2000
  • trunk/src/win32k/test/TestKernels.cmd

    r4164 r4972  
    1 /* $Id: TestKernels.cmd,v 1.2 2000-09-02 21:08:18 bird Exp $
     1/* $Id: TestKernels.cmd,v 1.3 2001-01-19 02:28:33 bird Exp $
    22 *
    33 * This script loops thru a set of different kernels running testcase 1.
     
    5454            iterate
    5555
    56         iBuild = substr(sName, 1, length(sName) - 2);
    57         chBuildType = substr(sName, length(sName) - 1, 1);
    58         chKernelType = substr(sName, length(sName), 1);
     56        if (substr(sName, 5, 1) <= '9') then    cchBuild = 5;
     57        else                                    cchBuild = 4;
     58        iBuild = substr(sName, 1, cchBuild);
     59        chBuildType = substr(sName, cchBuild + 1, 1);
     60        chKernelType = substr(sName, cchBuild + 2, 1);
     61        chRev = substr(sName, cchBuild + 3, 1);
    5962
    6063        /*
     
    108111        say 'Processing' asFiles.i'....';
    109112        if (chBuildType = 'R') then
    110             'win32ktst.exe 1' asFiles.i iVerMajor iVerMinor iBuild chKernelType chBuildType;
     113            sCmd = 'win32ktst.exe 1' asFiles.i iVerMajor iVerMinor iBuild chKernelType chBuildType chRev ;
    111114        else
    112             'win32ktst.exe 1' asFiles.i iVerMajor iVerMinor iBuild chKernelType chBuildType asFiles.i||'.SYM';
     115            sCmd = 'win32ktst.exe 1' asFiles.i iVerMajor iVerMinor iBuild chKernelType chBuildType chRev asFiles.i||'.SYM';
     116        say sCmd;
     117        sCmd;
    113118        if (rc <> 0) then
    114119        do
  • trunk/src/win32k/test/win32ktst.c

    r4810 r4972  
    1 /* $Id: win32ktst.c,v 1.5 2000-12-16 23:03:32 bird Exp $
     1/* $Id: win32ktst.c,v 1.6 2001-01-19 02:28:33 bird Exp $
    22 *
    33 * Win32k test module.
     
    598598 * Checks that default initiation works fine for a given kernel.
    599599 *
    600  * Syntax:  win32ktst.exe 1 <os2krnl> <majorver> <minorver> <build> <kerneltype: S|U|4> <buildtype: A|H|R> [os2krnl.sym]
     600 * Syntax:  win32ktst.exe 1 <os2krnl> <majorver> <minorver> <build> <kerneltype: S|U|4> <buildtype: A|H|R> [rev] [os2krnl.sym]
    601601 *
    602602 * @sketch  Create init packet with no arguments.
     
    616616
    617617    /* verify argument count */
    618     if (argc < 8 || argc > 9)
     618    if (argc < 8 || argc > 10)
    619619    {
    620620        printf("Invalid parameter count for testcase 1.\n");
     
    628628    /* make init string */
    629629    strcpy(szInitArgs, "-w3");
    630     if (argc >= 9)
    631         strcat(strcat(szInitArgs, " -S:"), argv[8]);
     630    if (argc >= 9 && argv[argc-1][1] != '\0')
     631        strcat(strcat(szInitArgs, " -S:"), argv[argc-1]);
    632632
    633633    /* $elf */
     
    647647            opt.fKernel = (argv[6][0] == 'S' ? KF_SMP : (argv[6][0] == '4' ? KF_W4 | KF_UNI : KF_UNI))
    648648                            | (argv[7][0] == 'A' || argv[7][0] == 'H' ? KF_DEBUG : 0);
     649            if (argc >= 9 && argv[8][1] == '\0')
     650                switch (argv[8][0])
     651                {
     652                    case 'a': case 'A': opt.fKernel |= KF_REV_A; break;
     653                    case 'b': case 'B': opt.fKernel |= KF_REV_B; break;
     654                    case 'c': case 'C': opt.fKernel |= KF_REV_C; break;
     655                    default:
     656                    opt.fKernel = (argv[8][0] - (argv[8][0] >= 'a' ? 'a'-1 : 'A'-1)) << KF_REV_SHIFT;
     657                }
    649658            opt.ulBuild = atoi(argv[5]);
    650659            opt.usVerMajor = (USHORT)atoi(argv[3]);
     
    912921    {
    913922        if (options.fKernel != pOpt->fKernel)
    914             printf("fKernel = %d - should be %d\n", options.fKernel, pOpt->fKernel, rc++);
     923            printf("fKernel = %x - should be %x\n", options.fKernel, pOpt->fKernel, rc++);
    915924        if (options.ulBuild != pOpt->ulBuild)
    916925            printf("ulBuild = %d - should be %d\n", options.ulBuild, pOpt->ulBuild, rc++);
Note: See TracChangeset for help on using the changeset viewer.