|
25 | 25 |
|
26 | 26 | // Data types for interpreting data returned by the queryResource extension
|
27 | 27 |
|
28 |
| -#define NVQR_MIN_DATA_FORMAT_VERSION 1 |
29 |
| -#define NVQR_MAX_DATA_FORMAT_VERSION 1 |
30 |
| -#define NVQR_VERSIONED_IDENT(IDENT, VERSION) IDENT ## _v ## VERSION |
31 |
| -#define NVQR_VERSION_TYPEDEF(TYPE, VERSION) \ |
32 |
| - typedef NVQR_VERSIONED_IDENT(TYPE, VERSION) TYPE |
| 28 | +#define NVQR_DATA_FORMAT_VERSION 2 |
| 29 | +#define NVQR_MAX_DATA_BUFFER_LEN 1024 |
33 | 30 |
|
34 | 31 | typedef int NVQRQueryData_t;
|
35 | 32 |
|
36 |
| -typedef struct NVQRQueryDetailedInfoRec_v1 { |
37 |
| - NVQRQueryData_t memType; |
38 |
| - NVQRQueryData_t objectType; |
39 |
| - NVQRQueryData_t memUsedkiB; |
40 |
| - NVQRQueryData_t numAllocs; |
41 |
| -} NVQRQueryDetailedInfo_v1; |
42 |
| -NVQR_VERSION_TYPEDEF(NVQRQueryDetailedInfo, NVQR_MAX_DATA_FORMAT_VERSION); |
| 33 | +typedef struct NVQRQueryDataHeaderRec { |
| 34 | + NVQRQueryData_t headerBlkSize; |
| 35 | + NVQRQueryData_t version; |
| 36 | + NVQRQueryData_t numDevices; |
| 37 | +} NVQRQueryDataHeader; |
43 | 38 |
|
44 |
| -typedef struct NVQRQuerySummaryInfoRec_v1 { |
| 39 | +typedef struct NVQRQueryDeviceInfoRec { |
| 40 | + NVQRQueryData_t deviceBlkSize; |
| 41 | + NVQRQueryData_t summaryBlkSize; |
45 | 42 | NVQRQueryData_t totalAllocs;
|
46 | 43 | NVQRQueryData_t vidMemUsedkiB;
|
47 |
| - NVQRQueryData_t sysMemUsedkiB; |
48 | 44 | NVQRQueryData_t vidMemFreekiB;
|
49 |
| - NVQRQueryData_t sysMemFreekiB; |
50 |
| -} NVQRQuerySummaryInfo_v1; |
51 |
| -NVQR_VERSION_TYPEDEF(NVQRQuerySummaryInfo, NVQR_MAX_DATA_FORMAT_VERSION); |
52 |
| - |
53 |
| -typedef struct NVQRQueryDeviceInfoRec_v1 { |
54 |
| - NVQRQuerySummaryInfo_v1 summary; |
55 |
| - NVQRQueryData_t numDetailedBlocks; |
56 |
| - NVQRQueryDetailedInfo_v1 detailed[]; |
57 |
| -} NVQRQueryDeviceInfo_v1; |
58 |
| -NVQR_VERSION_TYPEDEF(NVQRQueryDeviceInfo, NVQR_MAX_DATA_FORMAT_VERSION); |
59 |
| - |
60 |
| -typedef struct NVQRQueryDataHeaderRec_v1 { |
61 |
| - NVQRQueryData_t version; |
62 |
| - NVQRQueryData_t numDevices; |
63 |
| -} NVQRQueryDataHeader_v1; |
64 |
| -NVQR_VERSION_TYPEDEF(NVQRQueryDataHeader, NVQR_MAX_DATA_FORMAT_VERSION); |
65 |
| - |
66 |
| -#define NVQR_MAX_DEVICES 16 |
67 |
| -#define NVQR_MAX_DETAILED_INFOS 8 |
68 |
| -#define NVQR_MAX_DATA_BUFFER_LEN ( \ |
69 |
| - ( \ |
70 |
| - sizeof(NVQRQueryDataHeader) + ( \ |
71 |
| - NVQR_MAX_DEVICES * ( \ |
72 |
| - sizeof(NVQRQueryDeviceInfo) + \ |
73 |
| - NVQR_MAX_DETAILED_INFOS * sizeof(NVQRQueryDetailedInfo) \ |
74 |
| - ) \ |
75 |
| - ) \ |
76 |
| - ) / sizeof(NVQRQueryData_t) \ |
77 |
| -) |
78 |
| - |
79 |
| -// Helper functions for extracting data from raw int array |
| 45 | + NVQRQueryData_t numDetailBlocks; |
| 46 | +} NVQRQueryDeviceInfo; |
80 | 47 |
|
81 |
| -int nvqr_get_data_format_version (NVQRQueryData_t *data); |
82 |
| -int nvqr_get_num_devices (NVQRQueryData_t *data); |
83 |
| - |
84 |
| -// Returns a pointer to a DeviceInfo structure. The versioned functions |
85 |
| -// (e.g. nvqr_get_device_v1()) must only be used with the correct data format |
86 |
| -// version, and will return a pointer within the already allocated data |
87 |
| -// array passed into the function. This pointer must not be freed. |
88 |
| -// The unversioned nvqr_get_device() function will return a pointer to a *newly |
89 |
| -// allocated* structure of the highest type version supported by this header, |
90 |
| -// and copy data from the source array into this structure. The caller is |
91 |
| -//responsible for freeing the memory allocated by nvqr_get_device(). |
| 48 | +typedef struct NVQRQueryDetailInfoRec { |
| 49 | + NVQRQueryData_t detailBlkSize; |
| 50 | + NVQRQueryData_t memType; |
| 51 | + NVQRQueryData_t objectType; |
| 52 | + NVQRQueryData_t numAllocs; |
| 53 | + NVQRQueryData_t memUsedkiB; |
| 54 | +} NVQRQueryDetailInfo; |
92 | 55 |
|
93 |
| -NVQRQueryDeviceInfo_v1 *nvqr_get_device_v1(NVQRQueryData_t *data, int device); |
94 |
| -NVQRQueryDeviceInfo *nvqr_get_device(NVQRQueryData_t *data, int device); |
| 56 | +typedef struct NVQRTagBlockRec { |
| 57 | + NVQRQueryData_t tagBlkSize; |
| 58 | + NVQRQueryData_t tagId; |
| 59 | + NVQRQueryData_t deviceId; |
| 60 | + NVQRQueryData_t numAllocs; |
| 61 | + NVQRQueryData_t vidmemUsedkiB; |
| 62 | + NVQRQueryData_t tagLength; |
| 63 | + char tag[4]; |
| 64 | +} NVQRTagBlock; |
95 | 65 |
|
96 | 66 | #endif
|
0 commit comments