25 use vars map { '$' . $_ } @define;
28 unless($Config{'d_semget'} eq 'define' &&
29 $Config{'d_semctl'} 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 if(not defined $path and $level == 0) {
58 warn "Cannot find '$file'";
63 open(F,$path) or return;
64 $level = 1 unless defined $level;
65 my $indent = " " x $level;
66 print "#$indent open $path\n";
70 if ( /^#\s*include\s*[<"]([^>"]+)[>"]/ ) {
71 print "#${indent} include $1\n";
72 process_file($1,$level+1);
73 print "#${indent} done include $1\n";
74 print "#${indent} back in $path\n";
79 if ( /^#\s*define\s+(\w+)\s+(\w+)/ ) {
80 print "#${indent} define $1 $2\n";
85 print "#$indent close $path\n";
88 process_file("sys/sem.h");
89 process_file("sys/ipc.h");
90 process_file("sys/stat.h");
92 foreach my $d (@define) {
93 while(defined($define{$d}) && $define{$d} !~ /^(0x)?\d+$/) {
94 $define{$d} = exists $define{$define{$d}}
95 ? $define{$define{$d}} : undef;
97 unless(defined $define{$d}) {
98 print "# $d undefined\n";
104 ${ $d } = eval $define{$d};
111 # This test doesn't seem to work properly yet so skip it for _65
118 my $sem = semget($IPC_PRIVATE, 10, $S_IRWXU | $S_IRWXG | $S_IRWXO | $IPC_CREAT);
119 # Very first time called after machine is booted value may be 0
120 die "semget: $!\n" unless defined($sem) && $sem >= 0;
125 semctl($sem,0,$IPC_STAT,$data) or print "not ";
128 print "not " unless length($data);
131 semctl($sem,0,$SETALL,pack("s*",(0) x 10)) or print "not ";
135 semctl($sem,0,$GETALL,$data) or print "not ";
138 print "not " unless length($data);
141 my @data = unpack("s*",$data);
143 print "not " unless join("",@data) eq "0000000000";
147 semctl($sem,0,$SETALL,pack("s*",@data)) or print "not ";
151 semctl($sem,0,$GETALL,$data) or print "not ";
154 @data = unpack("s*",$data);
156 print "not " unless join("",@data) eq "0010000000";
159 semctl($sem,0,$IPC_RMID,undef);