Commit | Line | Data |
9b599b2a |
1 | #!./perl |
2 | |
3 | BEGIN { |
4 | chdir 't' if -d 't'; |
5 | @INC = '../lib'; |
6 | } |
7 | |
9b599b2a |
8 | use Config; |
9b599b2a |
9 | |
10 | BEGIN { |
11 | unless($Config{'d_msgget'} eq 'define' && |
12 | $Config{'d_msgctl'} eq 'define' && |
13 | $Config{'d_msgsnd'} eq 'define' && |
14 | $Config{'d_msgrcv'} eq 'define') { |
55d729e4 |
15 | print "1..0\n"; |
9b599b2a |
16 | exit; |
17 | } |
9b599b2a |
18 | } |
19 | |
20 | use strict; |
21 | |
0ade1984 |
22 | use IPC::SysV qw(IPC_PRIVATE IPC_NOWAIT IPC_STAT IPC_RMID |
23 | S_IRWXU S_IRWXG S_IRWXO); |
24 | |
9b599b2a |
25 | print "1..6\n"; |
26 | |
0ade1984 |
27 | my $msg = msgget(IPC_PRIVATE, S_IRWXU | S_IRWXG | S_IRWXO); |
ce5ffdc7 |
28 | # Very first time called after machine is booted value may be 0 |
29 | die "msgget failed: $!\n" unless defined($msg) && $msg >= 0; |
9b599b2a |
30 | |
31 | print "ok 1\n"; |
32 | |
33 | #Putting a message on the queue |
34 | my $msgtype = 1; |
35 | my $msgtext = "hello"; |
36 | |
37 | msgsnd($msg,pack("L a*",$msgtype,$msgtext),0) or print "not "; |
38 | print "ok 2\n"; |
39 | |
40 | my $data; |
0ade1984 |
41 | msgctl($msg,IPC_STAT,$data) or print "not "; |
9b599b2a |
42 | print "ok 3\n"; |
43 | |
44 | print "not " unless length($data); |
45 | print "ok 4\n"; |
46 | |
47 | my $msgbuf; |
0ade1984 |
48 | msgrcv($msg,$msgbuf,256,0,IPC_NOWAIT) or print "not "; |
9b599b2a |
49 | print "ok 5\n"; |
50 | |
51 | my($rmsgtype,$rmsgtext) = unpack("L a*",$msgbuf); |
52 | |
53 | print "not " unless($rmsgtype == $msgtype && $rmsgtext eq $msgtext); |
54 | print "ok 6\n"; |
55 | |
0ade1984 |
56 | msgctl($msg,IPC_RMID,0); |
9b599b2a |
57 | |