133 #include <winsock2.h> 136 #if defined(WIN32) || defined (WIN64) 137 #define snprintf(dst, ...) _snprintf_s((dst), _countof(dst), __VA_ARGS__) 142 #ifdef USE_SCHED_SETAFFINITY 155 unsigned int numPackets=0;
156 unsigned int numBytes=0;
164 bool firstFound =
false;
166 #ifdef USE_SCHED_SETAFFINITY 174 sched_setaffinity(0,
sizeof(cpu_set_t), &mask);
179 #if (defined LIBNUMA_API_VERSION) && LIBNUMA_API_VERSION == 2 180 struct bitmask * mask = numa_bitmask_alloc(numa_num_possible_nodes());
181 numa_bitmask_setbit(mask, 1);
183 numa_bitmask_free(mask);
186 nodemask_zero(&mask);
187 nodemask_set(&mask, 1);
194 DWORD_PTR processAffinityMask;
195 DWORD_PTR systemAffinityMask;
196 DWORD_PTR setAffinityMask;
197 ULONGLONG processorMask;
198 ULONG highestNodeNumber;
201 if (!GetNumaHighestNodeNumber(&highestNodeNumber)) {
202 fprintf(stderr,
"GetNumaHighestNodeNumber failed with errorcode: %08X\n", GetLastError());
205 if (highestNodeNumber == 0) {
206 fprintf(stderr,
"This is not a numa system. Cannot run this example.\n");
210 if (!GetProcessAffinityMask(GetCurrentProcess(), &processAffinityMask, &systemAffinityMask)) {
211 fprintf(stderr,
"GetProcessAffinityMask failed with errorcode: %08X\n", GetLastError());
215 if (!GetNumaNodeProcessorMask(1, &processorMask)) {
216 fprintf(stderr,
"GetNumaNodeProcessorMask failed with errorcode: %08X\n", GetLastError());
220 setAffinityMask = processAffinityMask & processorMask;
222 if (!SetProcessAffinityMask(GetCurrentProcess(), setAffinityMask)) {
223 fprintf(stderr,
"SetProcessAffinityMask failed with errorcode: %08X\n", GetLastError());
233 fprintf(stderr,
"NT_Init() failed: %s\n", errorBuffer);
238 if ((status =
NT_ConfigOpen(&hCfgStream,
"TestStream")) != NT_SUCCESS) {
241 fprintf(stderr,
"NT_ConfigOpen() failed: %s\n", errorBuffer);
249 fprintf(stderr,
"NT_NTPL() failed: %s\n", errorBuffer);
258 if ((status =
NT_NTPL(hCfgStream,
"Assign[StreamId=1] = Port == 0",
262 fprintf(stderr,
"NT_NTPL() failed: %s\n", errorBuffer);
274 fprintf(stderr,
"NT_ConfigClose() failed: %s\n", errorBuffer);
283 fprintf(stderr,
"NT_NetRxOpen() failed: %s\n", errorBuffer);
288 printf(
"Waiting for the first packet\n");
289 while (!firstFound) {
290 if ((status =
NT_NetRxGet(hNetRx, &hNetBuf, 1000)) != NT_SUCCESS) {
291 if ((status == NT_STATUS_TIMEOUT) || (status == NT_STATUS_TRYAGAIN)) {
297 fprintf(stderr,
"NT_NetRxGet() failed: %s\n", errorBuffer);
310 fprintf(stderr,
"NT_NetRxRelease() failed: %s\n", errorBuffer);
316 #define NUMBER_OF_PACKETS 1000000 319 if ((status =
NT_NetRxGet(hNetRx, &hNetBuf, 1000)) != NT_SUCCESS) {
320 if ((status == NT_STATUS_TIMEOUT) || (status == NT_STATUS_TRYAGAIN)) {
324 fprintf(stderr,
"NT_NetRxGet failed\n");
327 numBytes += NT_NET_GET_PKT_WIRE_LENGTH(hNetBuf);
330 if ((numPackets % 1000) == 0) {
344 if ((status =
NT_ConfigOpen(&hCfgStream,
"TestStream")) != NT_SUCCESS) {
347 fprintf(stderr,
"NT_ConfigOpen() failed: %s\n", errorBuffer);
352 snprintf(tmpBuffer,
sizeof(tmpBuffer),
"delete=%d", ntplInfo.
ntplId);
356 fprintf(stderr,
"NT_NTPL() failed: %s\n", errorBuffer);
368 fprintf(stderr,
"NT_ConfigClose() failed: %s\n", errorBuffer);
372 printf(
"Done: %16d packets, %16d bytes\n", numPackets, numBytes);