23 use vars map { '$' . $_ } @define;
26 unless($Config{'d_msgget'} eq 'define' &&
27 $Config{'d_msgctl'} eq 'define' &&
28 $Config{'d_msgsnd'} eq 'define' &&
29 $Config{'d_msgrcv'} eq 'define') {
36 my @incpath = (split(/\s+/, $Config{usrinc}), split(/\s+/ ,$Config{locincpth}));
41 my($file,$level) = @_;
43 return unless defined $file;
47 foreach $dir (@incpath) {
48 my $tmp = $dir . "/" . $file;
54 return if exists $done{$path};
57 unless(defined $path) {
58 warn "Cannot find '$file'" if $level == 0;
64 open(F,$path) or return;
65 $level = 0 unless defined $level;
69 process_file($1,$level+1)
70 if /^#\s*include\s*[<"]([^>"]+)[>"]/;
75 if /^#\s*define\s+(\w+)\s+((0x)?\d+|\w+)/;
80 process_file("sys/sem.h");
81 process_file("sys/ipc.h");
82 process_file("sys/stat.h");
84 foreach my $d (@define) {
85 while(defined($define{$d}) && $define{$d} !~ /^(0x)?\d+$/) {
86 $define{$d} = exists $define{$define{$d}}
87 ? $define{$define{$d}} : undef;
89 unless(defined $define{$d}) {
95 ${ $d } = eval $define{$d};
104 my $msg = msgget($IPC_PRIVATE, $S_IRWXU | $S_IRWXG | $S_IRWXO)
105 || die "msgget failed: $!\n";
109 #Putting a message on the queue
111 my $msgtext = "hello";
113 msgsnd($msg,pack("L a*",$msgtype,$msgtext),0) or print "not ";
117 msgctl($msg,$IPC_STAT,$data) or print "not ";
120 print "not " unless length($data);
124 msgrcv($msg,$msgbuf,256,0,$IPC_NOWAIT) or print "not ";
127 my($rmsgtype,$rmsgtext) = unpack("L a*",$msgbuf);
129 print "not " unless($rmsgtype == $msgtype && $rmsgtext eq $msgtext);
132 msgctl($msg,$IPC_RMID,0);