diff options
Diffstat (limited to 'cpukit/libfs/src/nfsclient/src/rpcio.c')
-rw-r--r-- | cpukit/libfs/src/nfsclient/src/rpcio.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/cpukit/libfs/src/nfsclient/src/rpcio.c b/cpukit/libfs/src/nfsclient/src/rpcio.c index 7324e02fd9..aeeb275b69 100644 --- a/cpukit/libfs/src/nfsclient/src/rpcio.c +++ b/cpukit/libfs/src/nfsclient/src/rpcio.c @@ -84,6 +84,9 @@ #include <string.h> #include <netinet/in.h> #include <arpa/inet.h> +#ifdef RTEMS_SMP +#include <sys/cpuset.h> +#endif #include "rpcio.h" @@ -407,6 +410,7 @@ static rtems_interval ticksPerSec; /* cached system clock rate (WHO IS ASSUMED */ rtems_task_priority rpciodPriority = 0; +cpu_set_t rpciodCpuset; #if (DEBUG) & DEBUG_MALLOC /* malloc wrappers for debugging */ @@ -983,6 +987,13 @@ struct sockwakeup wkup; &rpciod); assert( status == RTEMS_SUCCESSFUL ); +#ifdef RTEMS_SMP + if (CPU_EMPTY(&rpciodCpuset)) + CPU_COPY(&rpciodCpuset, &rtems_bsdnet_config.network_task_cpuset); + if (!CPU_EMPTY(&rpciodCpuset)) + rtems_task_set_affinity(rpciod, sizeof(cpu_set_t), &rpciodCpuset); +#endif + wkup.sw_pfn = rxWakeupCB; wkup.sw_arg = &rpciod; assert( 0==setsockopt(ourSock, SOL_SOCKET, SO_RCVWAKEUP, &wkup, sizeof(wkup)) ); |