From 349fc00ae58c115668736dbd214dd332f863cd98 Mon Sep 17 00:00:00 2001 From: Ryuta Kambe Date: Mon, 3 Feb 2025 10:54:51 +0900 Subject: [PATCH] fix: replace uint32_t for pid_t for process ids (#345) Signed-off-by: veqcc --- kmod/agnocast.c | 2 +- src/agnocastlib/include/agnocast_mq.hpp | 2 +- src/agnocastlib/include/agnocast_subscription.hpp | 2 +- src/agnocastlib/include/agnocast_utils.hpp | 4 ++-- src/agnocastlib/src/agnocast.cpp | 10 +++++----- src/agnocastlib/src/agnocast_subscription.cpp | 4 ++-- src/agnocastlib/src/agnocast_utils.cpp | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/kmod/agnocast.c b/kmod/agnocast.c index 18be4b07..2e8cb85d 100644 --- a/kmod/agnocast.c +++ b/kmod/agnocast.c @@ -1481,7 +1481,7 @@ static void pre_handler_publisher_exit(struct topic_wrapper * wrapper, const pid #define EXIT_QUEUE_SIZE_BITS 10 // arbitrary size #define EXIT_QUEUE_SIZE (1U << EXIT_QUEUE_SIZE_BITS) static DEFINE_SPINLOCK(pid_queue_lock); -static uint32_t exit_pid_queue[EXIT_QUEUE_SIZE]; +static pid_t exit_pid_queue[EXIT_QUEUE_SIZE]; static uint32_t queue_head; static uint32_t queue_tail; diff --git a/src/agnocastlib/include/agnocast_mq.hpp b/src/agnocastlib/include/agnocast_mq.hpp index 73f23d98..02e1d083 100644 --- a/src/agnocastlib/include/agnocast_mq.hpp +++ b/src/agnocastlib/include/agnocast_mq.hpp @@ -7,7 +7,7 @@ namespace agnocast struct MqMsgNewPublisher { - uint32_t publisher_pid; + pid_t publisher_pid; uint64_t shm_addr; uint64_t shm_size; }; diff --git a/src/agnocastlib/include/agnocast_subscription.hpp b/src/agnocastlib/include/agnocast_subscription.hpp index 9e3c405f..07bb9c91 100644 --- a/src/agnocastlib/include/agnocast_subscription.hpp +++ b/src/agnocastlib/include/agnocast_subscription.hpp @@ -27,7 +27,7 @@ namespace agnocast { -void map_read_only_area(const uint32_t pid, const uint64_t shm_addr, const uint64_t shm_size); +void map_read_only_area(const pid_t pid, const uint64_t shm_addr, const uint64_t shm_size); struct SubscriptionOptions { diff --git a/src/agnocastlib/include/agnocast_utils.hpp b/src/agnocastlib/include/agnocast_utils.hpp index 99a970a1..8a210798 100644 --- a/src/agnocastlib/include/agnocast_utils.hpp +++ b/src/agnocastlib/include/agnocast_utils.hpp @@ -12,8 +12,8 @@ extern rclcpp::Logger logger; void validate_ld_preload(); std::string create_mq_name(const std::string & topic_name, const topic_local_id_t id); -std::string create_shm_name(const uint32_t pid); -std::string create_mq_name_new_publisher(const uint32_t pid); +std::string create_shm_name(const pid_t pid); +std::string create_mq_name_new_publisher(const pid_t pid); uint64_t agnocast_get_timestamp(); } // namespace agnocast diff --git a/src/agnocastlib/src/agnocast.cpp b/src/agnocastlib/src/agnocast.cpp index fea1d409..7835d1bf 100644 --- a/src/agnocastlib/src/agnocast.cpp +++ b/src/agnocastlib/src/agnocast.cpp @@ -26,10 +26,10 @@ bool ok() return is_running.load(); } -bool already_mapped(const uint32_t pid) +bool already_mapped(const pid_t pid) { static pthread_mutex_t mapped_pid_mtx = PTHREAD_MUTEX_INITIALIZER; - static std::set mapped_publisher_pids; + static std::set mapped_publisher_pids; pthread_mutex_lock(&mapped_pid_mtx); const bool inserted = mapped_publisher_pids.insert(pid).second; @@ -39,7 +39,7 @@ bool already_mapped(const uint32_t pid) } void * map_area( - const uint32_t pid, const uint64_t shm_addr, const uint64_t shm_size, const bool writable) + const pid_t pid, const uint64_t shm_addr, const uint64_t shm_size, const bool writable) { const std::string shm_name = create_shm_name(pid); @@ -79,7 +79,7 @@ void * map_area( return ret; } -void * map_writable_area(const uint32_t pid, const uint64_t shm_addr, const uint64_t shm_size) +void * map_writable_area(const pid_t pid, const uint64_t shm_addr, const uint64_t shm_size) { if (already_mapped(pid)) { RCLCPP_ERROR(logger, "map_writeable_area failed"); @@ -90,7 +90,7 @@ void * map_writable_area(const uint32_t pid, const uint64_t shm_addr, const uint return map_area(pid, shm_addr, shm_size, true); } -void map_read_only_area(const uint32_t pid, const uint64_t shm_addr, const uint64_t shm_size) +void map_read_only_area(const pid_t pid, const uint64_t shm_addr, const uint64_t shm_size) { if (already_mapped(pid)) { return; diff --git a/src/agnocastlib/src/agnocast_subscription.cpp b/src/agnocastlib/src/agnocast_subscription.cpp index 28d9f1be..a6910fa0 100644 --- a/src/agnocastlib/src/agnocast_subscription.cpp +++ b/src/agnocastlib/src/agnocast_subscription.cpp @@ -58,7 +58,7 @@ static void wait_for_new_publisher(const pid_t subscriber_pid) exit(EXIT_FAILURE); } - const uint32_t publisher_pid = mq_msg.publisher_pid; + const pid_t publisher_pid = mq_msg.publisher_pid; const uint64_t publisher_shm_addr = mq_msg.shm_addr; const uint64_t publisher_shm_size = mq_msg.shm_size; map_read_only_area(publisher_pid, publisher_shm_addr, publisher_shm_size); @@ -96,7 +96,7 @@ union ioctl_subscriber_args SubscriptionBase::initialize(bool is_take_sub) continue; } - const uint32_t pid = subscriber_args.ret_publisher_pids[i]; + const pid_t pid = subscriber_args.ret_publisher_pids[i]; const uint64_t addr = subscriber_args.ret_shm_addrs[i]; const uint64_t size = subscriber_args.ret_shm_sizes[i]; map_read_only_area(pid, addr, size); diff --git a/src/agnocastlib/src/agnocast_utils.cpp b/src/agnocastlib/src/agnocast_utils.cpp index 80a72f1d..7cebc046 100644 --- a/src/agnocastlib/src/agnocast_utils.cpp +++ b/src/agnocastlib/src/agnocast_utils.cpp @@ -40,12 +40,12 @@ std::string create_mq_name(const std::string & topic_name, const topic_local_id_ return mq_name; } -std::string create_shm_name(const uint32_t pid) +std::string create_shm_name(const pid_t pid) { return "/agnocast@" + std::to_string(pid); } -std::string create_mq_name_new_publisher(const uint32_t pid) +std::string create_mq_name_new_publisher(const pid_t pid) { return "/new_publisher@" + std::to_string(pid); }