From c86509be4cacb767510ad144b27fef7c1da37065 Mon Sep 17 00:00:00 2001 From: qinwei1 Date: Fri, 11 Nov 2022 14:20:43 +0800 Subject: [PATCH] apps: getpid should return process id not thread id Summary: following the change in the nuttx kernel, implement the right semantics: 1. getpid should return the main thread id 2. gettid should return the current thread id Refer: https://github.com/apache/incubator-nuttx/issues/2499 https://github.com/apache/incubator-nuttx/pull/2518 Nuttx Kernel PR: https://github.com/apache/incubator-nuttx/pull/7597 update apps code Testing PASSED with qemu( 32/64 ) Signed-off-by: qinwei1 --- graphics/pdcurs34/nuttx/pdcthread.c | 12 ++++++------ netutils/netlib/netlib_getarptab.c | 2 +- netutils/netlib/netlib_getdevs.c | 2 +- netutils/netlib/netlib_getnbtab.c | 2 +- netutils/netlib/netlib_getroute.c | 2 +- netutils/thttpd/libhttpd.c | 6 +++--- system/taskset/taskset.c | 2 +- testing/ostest/prioinherit.c | 4 ++-- testing/ostest/timedwait.c | 2 +- 9 files changed, 17 insertions(+), 17 deletions(-) diff --git a/graphics/pdcurs34/nuttx/pdcthread.c b/graphics/pdcurs34/nuttx/pdcthread.c index 4568e886d..e1295f04a 100644 --- a/graphics/pdcurs34/nuttx/pdcthread.c +++ b/graphics/pdcurs34/nuttx/pdcthread.c @@ -116,9 +116,9 @@ static FAR struct pdc_context_s *PDC_ctx_new(void) ctx->panel_ctx = pdc_alloc_panel_ctx(); ctx->term_ctx = pdc_alloc_term_ctx(); - /* Get our PID */ + /* Get our TID */ - pid = getpid(); + pid = gettid(); #ifdef CONFIG_PDCURSES_MULTITHREAD_HASH @@ -177,9 +177,9 @@ FAR struct pdc_context_s * PDC_ctx(void) PDC_ctx_initialize(); } - /* Get our PID */ + /* Get our TID */ - pid = getpid(); + pid = gettid(); #ifdef CONFIG_PDCURSES_MULTITHREAD_HASH @@ -262,9 +262,9 @@ void PDC_ctx_free(void) #ifdef CONFIG_PDCURSES_MULTITHREAD_HASH int pid; - /* Get a unique hash key from the PID */ + /* Get a unique hash key from the TID */ - pid = PIDHASH(getpid()); + pid = PIDHASH(gettid()); ctx = g_pdc_ctx_per_pid[pid]; /* Free the context memory */ diff --git a/netutils/netlib/netlib_getarptab.c b/netutils/netlib/netlib_getarptab.c index 477f1b487..801e250aa 100644 --- a/netutils/netlib/netlib_getarptab.c +++ b/netutils/netlib/netlib_getarptab.c @@ -122,7 +122,7 @@ ssize_t netlib_get_arptable(FAR struct arp_entry_s *arptab, /* Bind the socket so that we can use send() and receive() */ - pid = getpid(); + pid = gettid(); addr.nl_family = AF_NETLINK; addr.nl_pad = 0; addr.nl_pid = pid; diff --git a/netutils/netlib/netlib_getdevs.c b/netutils/netlib/netlib_getdevs.c index 4a0248522..08ce0723c 100644 --- a/netutils/netlib/netlib_getdevs.c +++ b/netutils/netlib/netlib_getdevs.c @@ -110,7 +110,7 @@ ssize_t netlib_get_devices(FAR struct netlib_device_s *devlist, /* Bind the socket so that we can use send() and receive() */ - pid = getpid(); + pid = gettid(); addr.nl_family = AF_NETLINK; addr.nl_pad = 0; addr.nl_pid = pid; diff --git a/netutils/netlib/netlib_getnbtab.c b/netutils/netlib/netlib_getnbtab.c index c5c249d95..519f89fbd 100644 --- a/netutils/netlib/netlib_getnbtab.c +++ b/netutils/netlib/netlib_getnbtab.c @@ -123,7 +123,7 @@ ssize_t netlib_get_nbtable(FAR struct neighbor_entry_s *nbtab, /* Bind the socket so that we can use send() and receive() */ - pid = getpid(); + pid = gettid(); addr.nl_family = AF_NETLINK; addr.nl_pad = 0; addr.nl_pid = pid; diff --git a/netutils/netlib/netlib_getroute.c b/netutils/netlib/netlib_getroute.c index 55e9dfe4f..84c670b2e 100644 --- a/netutils/netlib/netlib_getroute.c +++ b/netutils/netlib/netlib_getroute.c @@ -140,7 +140,7 @@ ssize_t netlib_get_route(FAR struct rtentry *rtelist, /* Bind the socket so that we can use send() and receive() */ - pid = getpid(); + pid = gettid(); addr.nl_family = AF_NETLINK; addr.nl_pad = 0; addr.nl_pid = pid; diff --git a/netutils/thttpd/libhttpd.c b/netutils/thttpd/libhttpd.c index 7e31d2cbf..555817177 100644 --- a/netutils/thttpd/libhttpd.c +++ b/netutils/thttpd/libhttpd.c @@ -2135,9 +2135,9 @@ FAR httpd_server *httpd_initialize(FAR httpd_sockaddr *sa) { FAR httpd_server *hs; - /* Save the PID of the main thread */ + /* Save the TID of the main thread */ - main_thread = getpid(); + main_thread = gettid(); /* Allocate the server structure */ @@ -2203,7 +2203,7 @@ void httpd_write_response(httpd_conn *hc) { /* If we are in a sub-task, turn off no-delay mode. */ - if (main_thread != getpid()) + if (main_thread != gettid()) { httpd_clear_ndelay(hc->conn_fd); } diff --git a/system/taskset/taskset.c b/system/taskset/taskset.c index ea6d5ec0c..53f85375f 100644 --- a/system/taskset/taskset.c +++ b/system/taskset/taskset.c @@ -160,7 +160,7 @@ int main(int argc, FAR char *argv[]) strcat(command, " "); } - sched_setaffinity(getpid(), sizeof(cpu_set_t), &cpuset); + sched_setaffinity(gettid(), sizeof(cpu_set_t), &cpuset); system(command); } } diff --git a/testing/ostest/prioinherit.c b/testing/ostest/prioinherit.c index 8db384c63..e9502855b 100644 --- a/testing/ostest/prioinherit.c +++ b/testing/ostest/prioinherit.c @@ -100,7 +100,7 @@ static void sleep_and_display(int n, int us) do { - int status = sched_getparam(getpid(), &sparam); + int status = sched_getparam(gettid(), &sparam); if (status != 0) { @@ -503,7 +503,7 @@ void priority_inheritance(void) for (i = 0; i < NHIGHPRI_THREADS; i++) g_highstate[i] = NOTSTARTED; for (i = 0; i < NLOWPRI_THREADS; i++) g_lowstate[i] = NOTSTARTED; - status = sched_getparam(getpid(), &sparam); + status = sched_getparam(gettid(), &sparam); if (status != 0) { printf("priority_inheritance: ERROR sched_getparam failed\n"); diff --git a/testing/ostest/timedwait.c b/testing/ostest/timedwait.c index e04b91b16..3018dcbc9 100644 --- a/testing/ostest/timedwait.c +++ b/testing/ostest/timedwait.c @@ -158,7 +158,7 @@ void timedwait_test(void) } prio_max = sched_get_priority_max(SCHED_FIFO); - status = sched_getparam (getpid(), &sparam); + status = sched_getparam (gettid(), &sparam); if (status != 0) { printf("timedwait_test: sched_getparam failed\n");