static int     initMasks(fd_set *rmask);
 static void report_fork_failure_to_client(Port *port, int errnum);
 static CAC_state canAcceptConnections(void);
-static long PostmasterRandom(void);
 static void RandomSalt(char *salt, int len);
 static void signal_child(pid_t pid, int signal);
 static bool SignalSomeChildren(int signal, int targets);
 /*
  * PostmasterRandom
  */
-static long
+long
 PostmasterRandom(void)
 {
        /*
 
 
 #include "lib/ilist.h"
 #include "miscadmin.h"
+#include "postmaster/postmaster.h"
 #include "storage/dsm.h"
 #include "storage/ipc.h"
 #include "storage/lwlock.h"
        {
                Assert(dsm_control_address == NULL);
                Assert(dsm_control_mapped_size == 0);
-               dsm_control_handle = random();
+               dsm_control_handle = (dsm_handle) PostmasterRandom();
                if (dsm_control_handle == 0)
                        continue;
                if (dsm_impl_op(DSM_OP_CREATE, dsm_control_handle, segsize,
 
 
 extern void PostmasterMain(int argc, char *argv[]) pg_attribute_noreturn();
 extern void ClosePostmasterPorts(bool am_syslogger);
+extern long PostmasterRandom(void);
 
 extern int     MaxLivePostmasterChildren(void);