@@ -50,11 +50,11 @@ void cbm_daemon_runtime_force_peer_image_mismatch_for_testing(bool force) {
5050#include <sys/proc_info.h>
5151#include <sys/stat.h>
5252#include <unistd.h>
53- #elif defined(__linux__ ) || defined(__FreeBSD__ )
53+ #elif defined(__linux__ ) || defined(__FreeBSD__ ) || defined( __NetBSD__ )
5454#include <fcntl.h>
5555#include <sys/stat.h>
5656#include <unistd.h>
57- #if defined(__FreeBSD__ )
57+ #if defined(__FreeBSD__ ) || defined( __NetBSD__ )
5858#include <sys/types.h>
5959#include <sys/sysctl.h>
6060#endif
@@ -159,7 +159,7 @@ typedef struct {
159159 HANDLE file ;
160160 BY_HANDLE_FILE_INFORMATION information ;
161161 LARGE_INTEGER size ;
162- #elif defined(__APPLE__ ) || defined(__linux__ ) || defined(__FreeBSD__ )
162+ #elif defined(__APPLE__ ) || defined(__linux__ ) || defined(__FreeBSD__ ) || defined( __NetBSD__ )
163163 int fd ;
164164 struct stat status ;
165165#endif
@@ -514,7 +514,7 @@ static bool runtime_activation_response_decode(
514514static uint64_t runtime_current_process_id (void ) {
515515#ifdef _WIN32
516516 return (uint64_t )GetCurrentProcessId ();
517- #elif defined(__APPLE__ ) || defined(__linux__ ) || defined(__FreeBSD__ )
517+ #elif defined(__APPLE__ ) || defined(__linux__ ) || defined(__FreeBSD__ ) || defined( __NetBSD__ )
518518 return (uint64_t )getpid ();
519519#else
520520 return 0 ;
@@ -528,7 +528,7 @@ static void runtime_process_image_reference_init(runtime_process_image_reference
528528 memset (reference , 0 , sizeof (* reference ));
529529#ifdef _WIN32
530530 reference -> file = INVALID_HANDLE_VALUE ;
531- #elif defined(__APPLE__ ) || defined(__linux__ ) || defined(__FreeBSD__ )
531+ #elif defined(__APPLE__ ) || defined(__linux__ ) || defined(__FreeBSD__ ) || defined( __NetBSD__ )
532532 reference -> fd = -1 ;
533533#endif
534534}
@@ -542,7 +542,7 @@ static bool runtime_process_image_reference_release(runtime_process_image_refere
542542 if (reference -> file != INVALID_HANDLE_VALUE && !CloseHandle (reference -> file )) {
543543 ok = false;
544544 }
545- #elif defined(__APPLE__ ) || defined(__linux__ ) || defined(__FreeBSD__ )
545+ #elif defined(__APPLE__ ) || defined(__linux__ ) || defined(__FreeBSD__ ) || defined( __NetBSD__ )
546546 if (reference -> fd >= 0 && close (reference -> fd ) != 0 ) {
547547 ok = false;
548548 }
@@ -682,7 +682,7 @@ static bool runtime_mac_process_maps_file_executable(int process_id, const struc
682682 return false;
683683}
684684
685- #elif defined(__linux__ ) || defined(__FreeBSD__ )
685+ #elif defined(__linux__ ) || defined(__FreeBSD__ ) || defined( __NetBSD__ )
686686
687687static bool runtime_posix_stat_same_image (const struct stat * first , const struct stat * second ) {
688688 return first && second && S_ISREG (first -> st_mode ) && S_ISREG (second -> st_mode ) &&
@@ -818,12 +818,16 @@ static bool runtime_process_image_reference_acquire(
818818 } else if (image_fd >= 0 ) {
819819 (void )close (image_fd );
820820 }
821- #elif defined(__FreeBSD__ )
821+ #elif defined(__FreeBSD__ ) || defined( __NetBSD__ )
822822 if (process_id > INT_MAX ) {
823823 return false;
824824 }
825825 int pid = (int )process_id ;
826+ #if defined(__NetBSD__ )
827+ int mib [4 ] = {CTL_KERN , KERN_PROC_ARGS , pid , KERN_PROC_PATHNAME };
828+ #else
826829 int mib [4 ] = {CTL_KERN , KERN_PROC , KERN_PROC_PATHNAME , pid };
830+ #endif
827831 char path [PATH_MAX ];
828832 size_t path_length = sizeof (path );
829833 bool ok = sysctl (mib , 4 , path , & path_length , NULL , 0 ) == 0 && path_length > 0 ;
@@ -885,7 +889,7 @@ static bool runtime_process_image_reference_matches_process(
885889 runtime_mac_stat_same (& active -> status , & peer .status );
886890 bool released = runtime_process_image_reference_release (& peer );
887891 return same && released ;
888- #elif defined(__linux__ ) || defined(__FreeBSD__ )
892+ #elif defined(__linux__ ) || defined(__FreeBSD__ ) || defined( __NetBSD__ )
889893 runtime_process_image_reference_t peer ;
890894 runtime_process_image_reference_init (& peer );
891895 bool same = runtime_process_image_reference_acquire (process_id , & peer , NULL );
0 commit comments