1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
/* $XFree86: xc/programs/Xserver/hw/xfree86/common/xf86DoScanPci.c,v 1.12 2002/07/15 20:46:01 dawes Exp $ */
/*
* Finish setting up the server.
* Call the functions from the scanpci module.
*
* Copyright 1999-2002 by The XFree86 Project, Inc.
*
*/
#include <ctype.h>
#include <stdlib.h>
#include "X.h"
#include "Xmd.h"
#include "os.h"
#ifdef XFree86LOADER
#include "loaderProcs.h"
#endif
#include "xf86.h"
#include "xf86Priv.h"
#include "xf86Pci.h"
#include "xf86ScanPci.h"
void DoScanPci(int argc, char **argv, int i)
{
int j,skip,globalVerbose,scanpciVerbose;
ScanPciSetupProcPtr PciSetup;
ScanPciDisplayCardInfoProcPtr DisplayPCICardInfo;
#ifdef XFree86LOADER
int errmaj, errmin;
#endif
/*
* first we need to finish setup of the OS so that we can call other
* functions in the server
*/
OsInit();
/*
* now we decrease verbosity and remember the value, in case a later
* -verbose on the command line increases it, because that is a
* verbose flag for scanpci...
*/
globalVerbose = --xf86Verbose;
/*
* next we process the arguments that are remaining on the command line,
* so that things like the module path can be set there
*/
for ( j = i+1; j < argc; j++ ) {
if ((skip = ddxProcessArgument(argc, argv, j)))
j += (skip - 1);
}
/*
* was the verbosity level increased?
*/
if( (globalVerbose == 0) && (xf86Verbose > 0) )
scanpciVerbose = xf86Verbose - globalVerbose -1;
else
scanpciVerbose = xf86Verbose - globalVerbose;
xf86Verbose = globalVerbose;
/*
* now get the loader set up and load the scanpci module
*/
#ifdef XFree86LOADER
/* Initialise the loader */
LoaderInit();
/* Tell the loader the default module search path */
LoaderSetPath(xf86ModulePath);
if (!LoadModule("scanpci", NULL, NULL, NULL, NULL, NULL,
&errmaj, &errmin)) {
LoaderErrorMsg(NULL, "scanpci", errmaj, errmin);
exit(1);
}
if (LoaderCheckUnresolved(LD_RESOLV_IFDONE)) {
/* For now, just a warning */
xf86Msg(X_WARNING, "Some symbols could not be resolved!\n");
}
PciSetup = (ScanPciSetupProcPtr)LoaderSymbol("ScanPciSetupPciIds");
DisplayPCICardInfo =
(ScanPciDisplayCardInfoProcPtr)LoaderSymbol("ScanPciDisplayPCICardInfo");
#else
PciSetup = ScanPciSetupPciIds;
DisplayPCICardInfo = ScanPciDisplayPCICardInfo;
#endif
if (!(*PciSetup)())
FatalError("ScanPciSetupPciIds() failed\n");
(*DisplayPCICardInfo)(scanpciVerbose);
/*
* That's it; we really should clean things up, but a simple
* exit seems to be all we need.
*/
exit(0);
}
|