132 #include <winsock2.h> 135 #if defined(WIN32) || defined (WIN64) 136 #define snprintf(dst, ...) _snprintf_s((dst), _countof(dst), __VA_ARGS__) 141 #ifdef USE_SCHED_SETAFFINITY 163 bool firstFound =
false;
165 #ifdef USE_SCHED_SETAFFINITY 173 sched_setaffinity(0,
sizeof(cpu_set_t), &mask);
178 #if (defined LIBNUMA_API_VERSION) && LIBNUMA_API_VERSION == 2 179 struct bitmask * mask = numa_bitmask_alloc(numa_num_possible_nodes());
180 numa_bitmask_setbit(mask, 1);
182 numa_bitmask_free(mask);
185 nodemask_zero(&mask);
186 nodemask_set(&mask, 1);
193 DWORD_PTR processAffinityMask;
194 DWORD_PTR systemAffinityMask;
195 DWORD_PTR setAffinityMask;
196 ULONGLONG processorMask;
197 ULONG highestNodeNumber;
200 if (!GetNumaHighestNodeNumber(&highestNodeNumber)) {
201 fprintf(stderr,
"GetNumaHighestNodeNumber failed with errorcode: %08X\n", GetLastError());
204 if (highestNodeNumber == 0) {
205 fprintf(stderr,
"This is not a numa system. Cannot run this example.\n");
209 if (!GetProcessAffinityMask(GetCurrentProcess(), &processAffinityMask, &systemAffinityMask)) {
210 fprintf(stderr,
"GetProcessAffinityMask failed with errorcode: %08X\n", GetLastError());
214 if (!GetNumaNodeProcessorMask(1, &processorMask)) {
215 fprintf(stderr,
"GetNumaNodeProcessorMask failed with errorcode: %08X\n", GetLastError());
219 setAffinityMask = processAffinityMask & processorMask;
221 if (!SetProcessAffinityMask(GetCurrentProcess(), setAffinityMask)) {
222 fprintf(stderr,
"SetProcessAffinityMask failed with errorcode: %08X\n", GetLastError());
229 if ((status =
NT_Init(NTAPI_VERSION)) != NT_SUCCESS) {
232 fprintf(stderr,
"NT_Init() failed: %s\n", errorBuffer);
237 if ((status =
NT_ConfigOpen(&hCfgStream,
"TestStream")) != NT_SUCCESS) {
240 fprintf(stderr,
"NT_ConfigOpen() failed: %s\n", errorBuffer);
248 fprintf(stderr,
"NT_NTPL() failed: %s\n", errorBuffer);
257 if ((status =
NT_NTPL(hCfgStream,
"Assign[StreamId=1] = Port == 0",
261 fprintf(stderr,
"NT_NTPL() failed: %s\n", errorBuffer);
273 fprintf(stderr,
"NT_ConfigClose() failed: %s\n", errorBuffer);
282 fprintf(stderr,
"NT_NetRxOpen() failed: %s\n", errorBuffer);
287 printf(
"Waiting for the first packet\n");
288 while (!firstFound) {
289 if ((status =
NT_NetRxGet(hNetRx, &hNetBuf, 1000)) != NT_SUCCESS) {
290 if ((status == NT_STATUS_TIMEOUT) || (status == NT_STATUS_TRYAGAIN)) {
296 fprintf(stderr,
"NT_NetRxGet() failed: %s\n", errorBuffer);
309 fprintf(stderr,
"NT_NetRxRelease() failed: %s\n", errorBuffer);
315 #define NUMBER_OF_PACKETS 1000000 318 if ((status =
NT_NetRxGet(hNetRx, &hNetBuf, 1000)) != NT_SUCCESS) {
319 if ((status == NT_STATUS_TIMEOUT) || (status == NT_STATUS_TRYAGAIN)) {
323 fprintf(stderr,
"NT_NetRxGet failed\n");
326 numBytes += NT_NET_GET_PKT_WIRE_LENGTH(hNetBuf);
329 if ((numPackets % 1000) == 0) {
343 if ((status =
NT_ConfigOpen(&hCfgStream,
"TestStream")) != NT_SUCCESS) {
346 fprintf(stderr,
"NT_ConfigOpen() failed: %s\n", errorBuffer);
351 snprintf(tmpBuffer,
sizeof(tmpBuffer),
"delete=%d", ntplInfo.
ntplId);
355 fprintf(stderr,
"NT_NTPL() failed: %s\n", errorBuffer);
367 fprintf(stderr,
"NT_ConfigClose() failed: %s\n", errorBuffer);
371 printf(
"Done: %16d packets, %16d bytes\n", numPackets, numBytes);