From 6e5d7cdde79ab43ca6346512f3cd2b8e3488be76 Mon Sep 17 00:00:00 2001 From: Rohit Gupta <rohit.gupta@eurecom.fr> Date: Tue, 12 Apr 2016 12:54:15 +0200 Subject: [PATCH] disable CPU affinity for UE and also for case when MAX_CPUS <=2 --- targets/RT/USER/lte-softmodem.c | 65 ++++++++++++++++++--------------- 1 file changed, 36 insertions(+), 29 deletions(-) diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c index 583be1ccb7..641990aabd 100644 --- a/targets/RT/USER/lte-softmodem.c +++ b/targets/RT/USER/lte-softmodem.c @@ -3298,39 +3298,46 @@ int main( int argc, char **argv ) } #ifndef LOWLATENCY - cpu_set_t cpuset; - int s; - char cpu_affinity[1024]; - - LOG_I(HW, "Setting the affinity of main function to CPU 0, for device library to use CPU 0 only!\n"); - - CPU_ZERO(&cpuset); - CPU_SET(0, &cpuset); - s = pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset); - if (s != 0) + /* Currently we set affinity for UHD to CPU 0 for eNB only and only if number of CPUS >2 */ + /* ToDo: Set CPU affinity for UE */ + if (UE_flag == 0 && get_nprocs() > 2) { - perror( "pthread_setaffinity_np"); - exit_fun("Error setting processor affinity"); - } - /* Check the actual affinity mask assigned to the thread */ + cpu_set_t cpuset; + int s; + char cpu_affinity[1024]; - s = pthread_getaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset); - if (s != 0) - { - perror( "pthread_getaffinity_np"); - exit_fun("Error getting processor affinity "); - } - memset(cpu_affinity, 0 , sizeof(cpu_affinity)); - for (int j = 0; j < CPU_SETSIZE; j++) - if (CPU_ISSET(j, &cpuset)) - { - char temp[1024]; - sprintf(temp, " CPU_%d ", j); - strcat(cpu_affinity, temp); + LOG_I(HW, "Setting the affinity of main function to CPU 0, for device library to use CPU 0 only!\n"); + + CPU_ZERO(&cpuset); + CPU_SET(0, &cpuset); + + s = pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset); + if (s != 0) + { + perror( "pthread_setaffinity_np"); + exit_fun("Error setting processor affinity"); + } + + /* Check the actual affinity mask assigned to the thread */ + s = pthread_getaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset); + if (s != 0) + { + perror( "pthread_getaffinity_np"); + exit_fun("Error getting processor affinity "); + } + memset(cpu_affinity, 0 , sizeof(cpu_affinity)); + for (int j = 0; j < CPU_SETSIZE; j++) + { + if (CPU_ISSET(j, &cpuset)) + { + char temp[1024]; + sprintf(temp, " CPU_%d ", j); + strcat(cpu_affinity, temp); + } + } + LOG_I(HW, "CPU Affinity of main() function is... %s\n", cpu_affinity); } - - LOG_I(HW, "CPU Affinity of main() function is... %s\n", cpu_affinity); #endif /* device host type is set*/ -- GitLab