25 use vars map { '$' . $_ } @define;
28 unless($Config{'d_semget'} eq 'define' &&
29 $Config{'d_semctl'} eq 'define') {
33 my @incpath = (split(/\s+/, $Config{usrinc}), split(/\s+/ ,$Config{locincpth}));
40 return unless defined $file;
44 foreach $dir (@incpath) {
45 my $tmp = $dir . "/" . $file;
51 return if exists $done{$path};
54 unless(defined $path) {
55 warn "Cannot find '$file'";
59 open(F,$path) or return;
64 if /^#\s*include\s*[<"]([^>"]+)[>"]/;
69 if /^#\s*define\s+(\w+)\s+((0x)?\d+|\w+)/;
74 process_file("sys/sem.h");
75 process_file("sys/ipc.h");
76 process_file("sys/stat.h");
78 foreach $d (@define) {
79 while(defined($define{$d}) && $define{$d} !~ /^(0x)?\d+$/) {
80 $define{$d} = exists $define{$define{$d}}
81 ? $define{$define{$d}} : undef;
83 unless(defined $define{$d}) {
87 ${ $d } = eval $define{$d};
93 # This test doesn't seem to work properly yet so skip it for _65
100 my $sem = semget($IPC_PRIVATE, 10, $S_IRWXU | $S_IRWXG | $S_IRWXO | $IPC_CREAT)
101 || die "semget: $!\n";
106 semctl($sem,0,$IPC_STAT,$data) or print "not ";
109 print "not " unless length($data);
112 semctl($sem,0,$SETALL,pack("s*",(0) x 10)) or print "not ";
116 semctl($sem,0,$GETALL,$data) or print "not ";
119 print "not " unless length($data);
122 my @data = unpack("s*",$data);
124 print "not " unless join("",@data) eq "0000000000";
128 semctl($sem,0,$SETALL,pack("s*",@data)) or print "not ";
132 semctl($sem,0,$GETALL,$data) or print "not ";
135 @data = unpack("s*",$data);
137 print "not " unless join("",@data) eq "0010000000";
140 semctl($sem,0,$IPC_RMID,undef);