1 | /* $Id: FastInfoBlocks.c 2726 2006-07-17 22:15:11Z bird $ */
|
---|
2 | /** @file
|
---|
3 | *
|
---|
4 | * Fast InfoBlock Access.
|
---|
5 | *
|
---|
6 | * Copyright (c) 2004 knut st. osmundsen <bird@innotek.de>
|
---|
7 | *
|
---|
8 | *
|
---|
9 | * This file is part of InnoTek LIBC.
|
---|
10 | *
|
---|
11 | * InnoTek LIBC is free software; you can redistribute it and/or modify
|
---|
12 | * it under the terms of the GNU Lesser General Public License as published
|
---|
13 | * by the Free Software Foundation; either version 2 of the License, or
|
---|
14 | * (at your option) any later version.
|
---|
15 | *
|
---|
16 | * InnoTek LIBC is distributed in the hope that it will be useful,
|
---|
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
---|
19 | * GNU Lesser General Public License for more details.
|
---|
20 | *
|
---|
21 | * You should have received a copy of the GNU Lesser General Public License
|
---|
22 | * along with InnoTek LIBC; if not, write to the Free Software
|
---|
23 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
---|
24 | *
|
---|
25 | */
|
---|
26 |
|
---|
27 |
|
---|
28 | /*******************************************************************************
|
---|
29 | * Header Files *
|
---|
30 | *******************************************************************************/
|
---|
31 | #include "libc-alias.h"
|
---|
32 | #define INCL_DOSINFOSEG
|
---|
33 | #define INCL_DOSPROCESS
|
---|
34 | #define INCL_FSMACROS
|
---|
35 | #include <os2emx.h>
|
---|
36 | #include <klibc/fib.h>
|
---|
37 | #define __LIBC_LOG_GROUP __LIBC_LOG_GRP_MISC
|
---|
38 | #include <InnoTekLIBC/logstrict.h>
|
---|
39 |
|
---|
40 |
|
---|
41 | /*******************************************************************************
|
---|
42 | * Global Variables *
|
---|
43 | *******************************************************************************/
|
---|
44 | struct __libc_GpFIBLIS_s *__libc_GpFIBLIS = NULL;
|
---|
45 | struct __libc_GpFIBGIS_s *__libc_GpFIBGIS = NULL;
|
---|
46 | struct __libc_GpFIBPIB_s *__libc_GpFIBPIB = NULL;
|
---|
47 |
|
---|
48 |
|
---|
49 | /**
|
---|
50 | * Initialize the global infoblock/segment pointers.
|
---|
51 | * @param fForced Used during fork().
|
---|
52 | */
|
---|
53 | int __libc_back_fibInit(int fForced)
|
---|
54 | {
|
---|
55 | LIBCLOG_ENTER("\n");
|
---|
56 | if (!fForced && __libc_GpFIBPIB)
|
---|
57 | LIBCLOG_RETURN_INT(0);
|
---|
58 |
|
---|
59 | __libc_GpFIBGIS = (struct __libc_GpFIBGIS_s *)GETGINFOSEG();
|
---|
60 | __libc_GpFIBLIS = (struct __libc_GpFIBLIS_s *)GETLINFOSEG();
|
---|
61 | PPIB pPib = NULL;
|
---|
62 | PTIB pTib;
|
---|
63 | FS_VAR();
|
---|
64 | FS_SAVE_LOAD();
|
---|
65 | DosGetInfoBlocks(&pTib, &pPib);
|
---|
66 | __libc_GpFIBPIB = (struct __libc_GpFIBPIB_s *)pPib;
|
---|
67 | __libc_Back_fibDumpAll();
|
---|
68 | FS_RESTORE();
|
---|
69 | LIBCLOG_RETURN_INT(0);
|
---|
70 | }
|
---|
71 |
|
---|
72 |
|
---|
73 | /**
|
---|
74 | * Logs the content of all the structures.
|
---|
75 | */
|
---|
76 | void __libc_Back_fibDumpAll(void)
|
---|
77 | {
|
---|
78 | LIBCLOG_ENTER("\n");
|
---|
79 |
|
---|
80 | LIBCLOG_MSG("_gpfibPIB=%p\n", (void *)__libc_GpFIBPIB);
|
---|
81 | if (__libc_GpFIBPIB)
|
---|
82 | {
|
---|
83 | LIBCLOG_MSG("pib_ulpid = %08lx\n", __libc_GpFIBPIB->pib_ulpid );
|
---|
84 | LIBCLOG_MSG("pib_ulppid = %08lx\n", __libc_GpFIBPIB->pib_ulppid );
|
---|
85 | LIBCLOG_MSG("pib_hmte = %08lx\n", __libc_GpFIBPIB->pib_hmte );
|
---|
86 | LIBCLOG_MSG("pib_pchcmd = %p\n", __libc_GpFIBPIB->pib_pchcmd );
|
---|
87 | LIBCLOG_MSG("pib_pchenv = %p\n", __libc_GpFIBPIB->pib_pchenv );
|
---|
88 | LIBCLOG_MSG("pib_flstatus = %08lx\n", __libc_GpFIBPIB->pib_flstatus );
|
---|
89 | LIBCLOG_MSG("pib_ultype = %08lx\n", __libc_GpFIBPIB->pib_ultype );
|
---|
90 | }
|
---|
91 | LIBCLOG_MSG("__libc_GpFIBLIS = %p\n", (void *)__libc_GpFIBLIS);
|
---|
92 | if (__libc_GpFIBLIS)
|
---|
93 | {
|
---|
94 | LIBCLOG_MSG("pidCurrent = %08x\n", (unsigned)__libc_GpFIBLIS->pidCurrent );
|
---|
95 | LIBCLOG_MSG("pidParent = %08x\n", (unsigned)__libc_GpFIBLIS->pidParent );
|
---|
96 | LIBCLOG_MSG("prtyCurrent = %08x\n", (unsigned)__libc_GpFIBLIS->prtyCurrent );
|
---|
97 | LIBCLOG_MSG("tidCurrent = %08x\n", (unsigned)__libc_GpFIBLIS->tidCurrent );
|
---|
98 | LIBCLOG_MSG("sgCurrent = %08x\n", (unsigned)__libc_GpFIBLIS->sgCurrent );
|
---|
99 | LIBCLOG_MSG("rfProcStatus = %08x\n", (unsigned)__libc_GpFIBLIS->rfProcStatus );
|
---|
100 | LIBCLOG_MSG("LIS_fillbyte1 = %08x\n", (unsigned)__libc_GpFIBLIS->LIS_fillbyte1 );
|
---|
101 | LIBCLOG_MSG("fFoureground = %08x\n", (unsigned)__libc_GpFIBLIS->fFoureground );
|
---|
102 | LIBCLOG_MSG("typeProcess = %08x\n", (unsigned)__libc_GpFIBLIS->typeProcess );
|
---|
103 | LIBCLOG_MSG("LIS_fillbyte2 = %08x\n", (unsigned)__libc_GpFIBLIS->LIS_fillbyte2 );
|
---|
104 | LIBCLOG_MSG("selEnv = %08x\n", (unsigned)__libc_GpFIBLIS->selEnv );
|
---|
105 | LIBCLOG_MSG("offCmdLine = %08x\n", (unsigned)__libc_GpFIBLIS->offCmdLine );
|
---|
106 | LIBCLOG_MSG("cbDataSegment = %08x\n", (unsigned)__libc_GpFIBLIS->cbDataSegment );
|
---|
107 | LIBCLOG_MSG("cbStack = %08x\n", (unsigned)__libc_GpFIBLIS->cbStack );
|
---|
108 | LIBCLOG_MSG("cbHeap = %08x\n", (unsigned)__libc_GpFIBLIS->cbHeap );
|
---|
109 | LIBCLOG_MSG("hmod = %08x\n", (unsigned)__libc_GpFIBLIS->hmod );
|
---|
110 | LIBCLOG_MSG("selDS = %08x\n", (unsigned)__libc_GpFIBLIS->selDS );
|
---|
111 | LIBCLOG_MSG("LIS_PackSel = %08x\n", (unsigned)__libc_GpFIBLIS->LIS_PackSel );
|
---|
112 | LIBCLOG_MSG("LIS_PackShrSel = %08x\n", (unsigned)__libc_GpFIBLIS->LIS_PackShrSel);
|
---|
113 | LIBCLOG_MSG("LIS_PackPckSel = %08x\n", (unsigned)__libc_GpFIBLIS->LIS_PackPckSel);
|
---|
114 | }
|
---|
115 | LIBCLOG_MSG("__libc_GpFIBGIS=%p\n", (void *)__libc_GpFIBGIS);
|
---|
116 | if (__libc_GpFIBGIS)
|
---|
117 | {
|
---|
118 | LIBCLOG_MSG("SIS_BigTime = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_BigTime );
|
---|
119 | LIBCLOG_MSG("SIS_MsCount = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_MsCount );
|
---|
120 | LIBCLOG_MSG("SIS_HrsTime = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_HrsTime );
|
---|
121 | LIBCLOG_MSG("SIS_MinTime = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_MinTime );
|
---|
122 | LIBCLOG_MSG("SIS_SecTime = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_SecTime );
|
---|
123 | LIBCLOG_MSG("SIS_HunTime = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_HunTime );
|
---|
124 | LIBCLOG_MSG("SIS_TimeZone = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_TimeZone );
|
---|
125 | LIBCLOG_MSG("SIS_ClkIntrvl = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_ClkIntrvl );
|
---|
126 | LIBCLOG_MSG("SIS_DayDate = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_DayDate );
|
---|
127 | LIBCLOG_MSG("SIS_MonDate = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_MonDate );
|
---|
128 | LIBCLOG_MSG("SIS_YrsDate = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_YrsDate );
|
---|
129 | LIBCLOG_MSG("SIS_DOWDate = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_DOWDate );
|
---|
130 | LIBCLOG_MSG("SIS_VerMajor = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_VerMajor );
|
---|
131 | LIBCLOG_MSG("SIS_VerMinor = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_VerMinor );
|
---|
132 | LIBCLOG_MSG("SIS_RevLettr = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_RevLettr );
|
---|
133 | LIBCLOG_MSG("SIS_CurScrnGrp = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_CurScrnGrp );
|
---|
134 | LIBCLOG_MSG("SIS_MaxScrnGrp = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_MaxScrnGrp );
|
---|
135 | LIBCLOG_MSG("SIS_HugeShfCnt = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_HugeShfCnt );
|
---|
136 | LIBCLOG_MSG("SIS_ProtMdOnly = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_ProtMdOnly );
|
---|
137 | LIBCLOG_MSG("SIS_FgndPID = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_FgndPID );
|
---|
138 | LIBCLOG_MSG("SIS_Dynamic = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_Dynamic );
|
---|
139 | LIBCLOG_MSG("SIS_MaxWait = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_MaxWait );
|
---|
140 | LIBCLOG_MSG("SIS_MinSlice = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_MinSlice );
|
---|
141 | LIBCLOG_MSG("SIS_MaxSlice = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_MaxSlice );
|
---|
142 | LIBCLOG_MSG("SIS_BootDrv = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_BootDrv );
|
---|
143 | LIBCLOG_MSG("SIS_MaxVioWinSG = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_MaxVioWinSG );
|
---|
144 | LIBCLOG_MSG("SIS_MaxPresMgrSG = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_MaxPresMgrSG );
|
---|
145 | LIBCLOG_MSG("SIS_SysLog = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_SysLog );
|
---|
146 | LIBCLOG_MSG("SIS_MMIOBase = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_MMIOBase );
|
---|
147 | LIBCLOG_MSG("SIS_MMIOAddr = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_MMIOAddr );
|
---|
148 | LIBCLOG_MSG("SIS_MaxVDMs = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_MaxVDMs );
|
---|
149 | LIBCLOG_MSG("SIS_Reserved = %08x\n", (unsigned)__libc_GpFIBGIS->SIS_Reserved );
|
---|
150 | }
|
---|
151 | LIBCLOG_RETURN_VOID();
|
---|
152 | }
|
---|
153 |
|
---|