File | /opt/wise/lib/perl5/5.10.0/x86_64-linux-thread-multi/POSIX.pm | Statements Executed | 125 | Total Time | 0.003289 seconds |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine | |
---|---|---|---|---|---|---|
5980968 | 1 | 2 | 18.66946 | 18.66946 | POSIX:: | acos (xsub) |
13870 | 1 | 2 | 0.06279 | 0.06279 | POSIX:: | asin (xsub) |
12 | 9 | 8 | 0.00175 | 0.00415 | POSIX:: | import |
5 | 1 | 2 | 0.00050 | 0.00050 | POSIX:: | strftime (xsub) |
1 | 1 | 1 | 1.6e-5 | 1.6e-5 | POSIX:: | AUTOLOAD |
0 | 0 | 0 | 0 | 0 | POSIX:: | BEGIN |
0 | 0 | 0 | 0 | 0 | POSIX::SigAction:: | BEGIN |
0 | 0 | 0 | 0 | 0 | POSIX::SigRt:: | BEGIN |
0 | 0 | 0 | 0 | 0 | POSIX::SigRt:: | DESTROY |
0 | 0 | 0 | 0 | 0 | POSIX:: | __ANON__[:53] |
0 | 0 | 0 | 0 | 0 | POSIX:: | __ANON__[:57] |
0 | 0 | 0 | 0 | 0 | POSIX:: | croak |
Line | Stmts. | Exclusive Time | Avg. | Code |
---|---|---|---|---|
1 | package POSIX; | |||
2 | 3 | 2.6e-5 | 8.7e-6 | use strict; # spent 10µs making 1 call to strict::import |
3 | 3 | 7.0e-5 | 2.3e-5 | use warnings; # spent 23µs making 1 call to warnings::import |
4 | ||||
5 | 1 | 4.0e-6 | 4.0e-6 | our(@ISA, %EXPORT_TAGS, @EXPORT_OK, @EXPORT, $AUTOLOAD, %SIGRT) = (); |
6 | ||||
7 | 1 | 0 | 0 | our $VERSION = "1.13"; |
8 | ||||
9 | 3 | 0.00020 | 6.5e-5 | use AutoLoader; # spent 733µs making 1 call to AutoLoader::import |
10 | ||||
11 | 3 | 3.5e-5 | 1.2e-5 | use XSLoader (); |
12 | ||||
13 | use Fcntl qw(FD_CLOEXEC F_DUPFD F_GETFD F_GETFL F_GETLK F_RDLCK F_SETFD # spent 249µs making 1 call to Exporter::import | |||
14 | F_SETFL F_SETLK F_SETLKW F_UNLCK F_WRLCK O_ACCMODE O_APPEND | |||
15 | O_CREAT O_EXCL O_NOCTTY O_NONBLOCK O_RDONLY O_RDWR O_TRUNC | |||
16 | 3 | 0.00039 | 0.00013 | O_WRONLY); |
17 | ||||
18 | # Grandfather old foo_h form to new :foo_h form | |||
19 | 1 | 1.0e-6 | 1.0e-6 | my $loaded; |
20 | ||||
21 | # spent 4.15ms (1.75+2.40) within POSIX::import which was called 12 times, avg 345µs/call:
# 4 times (74µs+276µs) by WISE::UtilsLight::mytime at line 234 of /wise/base/deliv/dev/lib/perl/WISE/UtilsLight.pm, avg 88µs/call
# once (1.49ms+775µs) at line 20 of /wise/base/deliv/dev/lib/perl/WISE/Time.pm
# once (27µs+616µs) at line 73 of /wise/base/deliv/dev/lib/perl/WISE/Utils.pm
# once (20µs+433µs) at line 6 of /wise/base/static/lib/perl5/site_perl/5.10.0/File/Slurp.pm
# once (33µs+68µs) at line 5 of /wise/base/static/lib/perl5/site_perl/5.10.0/DBIx/Class/Storage/DBI/SQLite.pm
# once (32µs+53µs) by WISE::Utils::area_2circle_overlap at line 1262 of /wise/base/deliv/dev/lib/perl/WISE/Utils.pm
# once (26µs+56µs) at line 25 of /wise/base/deliv/dev/lib/perl/WISE/CoUtils.pm
# once (21µs+61µs) at line 54 of /wise/base/static/lib/perl5/site_perl/5.10.0/Astro/Time.pm
# once (22µs+58µs) at line 48 of /wise/base/static/lib/perl5/site_perl/5.10.0/Astro/Coord.pm | |||
22 | 80 | 0.00026 | 3.3e-6 | load_imports() unless $loaded++; # spent 16µs making 1 call to POSIX::AUTOLOAD |
23 | my $this = shift; | |||
24 | my @list = map { m/^\w+_h$/ ? ":$_" : $_ } @_; | |||
25 | local $Exporter::ExportLevel = 1; | |||
26 | Exporter::import($this,@list); # spent 2.30ms making 12 calls to Exporter::import, avg 191µs/call | |||
27 | } | |||
28 | ||||
29 | sub croak { require Carp; goto &Carp::croak } | |||
30 | # declare usage to assist AutoLoad | |||
31 | sub usage; | |||
32 | ||||
33 | 1 | 0.00085 | 0.00085 | XSLoader::load 'POSIX', $VERSION; # spent 853µs making 1 call to XSLoader::load |
34 | ||||
35 | 1 | 2.2e-5 | 2.2e-5 | my %NON_CONSTS = (map {($_,1)} |
36 | qw(S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISREG WEXITSTATUS | |||
37 | WIFEXITED WIFSIGNALED WIFSTOPPED WSTOPSIG WTERMSIG)); | |||
38 | ||||
39 | # spent 16µs within POSIX::AUTOLOAD which was called
# once (16µs+0) by POSIX::import at line 22 | |||
40 | 3 | 2.9e-5 | 9.7e-6 | no strict; # spent 9µs making 1 call to strict::unimport |
41 | 3 | 0.00025 | 8.2e-5 | no warnings 'uninitialized'; # spent 25µs making 1 call to warnings::unimport |
42 | 3 | 1.2e-5 | 4.0e-6 | if ($AUTOLOAD =~ /::(_?[a-z])/) { |
43 | # require AutoLoader; | |||
44 | $AutoLoader::AUTOLOAD = $AUTOLOAD; | |||
45 | goto &AutoLoader::AUTOLOAD | |||
46 | } | |||
47 | local $! = 0; | |||
48 | my $constname = $AUTOLOAD; | |||
49 | $constname =~ s/.*:://; | |||
50 | if ($NON_CONSTS{$constname}) { | |||
51 | my ($val, $error) = &int_macro_int($constname, $_[0]); | |||
52 | croak $error if $error; | |||
53 | *$AUTOLOAD = sub { &int_macro_int($constname, $_[0]) }; | |||
54 | } else { | |||
55 | my ($error, $val) = constant($constname); | |||
56 | croak $error if $error; | |||
57 | *$AUTOLOAD = sub { $val }; | |||
58 | } | |||
59 | ||||
60 | goto &$AUTOLOAD; | |||
61 | } | |||
62 | ||||
63 | package POSIX::SigAction; | |||
64 | ||||
65 | 3 | 3.3e-5 | 1.1e-5 | use AutoLoader 'AUTOLOAD'; # spent 29µs making 1 call to AutoLoader::import |
66 | ||||
67 | package POSIX::SigRt; | |||
68 | ||||
69 | 3 | 2.6e-5 | 8.7e-6 | use AutoLoader 'AUTOLOAD'; # spent 21µs making 1 call to AutoLoader::import |
70 | ||||
71 | 3 | 0.00098 | 0.00033 | use Tie::Hash; # spent 5µs making 1 call to import |
72 | ||||
73 | 3 | 6.9e-5 | 2.3e-5 | use vars qw($SIGACTION_FLAGS $_SIGRTMIN $_SIGRTMAX $_sigrtn @ISA); # spent 65µs making 1 call to vars::import |
74 | 1 | 1.5e-5 | 1.5e-5 | @POSIX::SigRt::ISA = qw(Tie::StdHash); |
75 | ||||
76 | 1 | 1.0e-6 | 1.0e-6 | $SIGACTION_FLAGS = 0; |
77 | ||||
78 | 1 | 5.0e-6 | 5.0e-6 | tie %POSIX::SIGRT, 'POSIX::SigRt'; |
79 | ||||
80 | sub DESTROY {}; | |||
81 | ||||
82 | package POSIX; | |||
83 | ||||
84 | 1 | 1.3e-5 | 1.3e-5 | 1; |
85 | __END__ | |||
86 | ||||
87 | sub usage { | |||
88 | my ($mess) = @_; | |||
89 | croak "Usage: POSIX::$mess"; | |||
90 | } | |||
91 | ||||
92 | sub redef { | |||
93 | my ($mess) = @_; | |||
94 | croak "Use method $mess instead"; | |||
95 | } | |||
96 | ||||
97 | sub unimpl { | |||
98 | my ($mess) = @_; | |||
99 | $mess =~ s/xxx//; | |||
100 | croak "Unimplemented: POSIX::$mess"; | |||
101 | } | |||
102 | ||||
103 | sub assert { | |||
104 | usage "assert(expr)" if @_ != 1; | |||
105 | if (!$_[0]) { | |||
106 | croak "Assertion failed"; | |||
107 | } | |||
108 | } | |||
109 | ||||
110 | sub tolower { | |||
111 | usage "tolower(string)" if @_ != 1; | |||
112 | lc($_[0]); | |||
113 | } | |||
114 | ||||
115 | sub toupper { | |||
116 | usage "toupper(string)" if @_ != 1; | |||
117 | uc($_[0]); | |||
118 | } | |||
119 | ||||
120 | sub closedir { | |||
121 | usage "closedir(dirhandle)" if @_ != 1; | |||
122 | CORE::closedir($_[0]); | |||
123 | } | |||
124 | ||||
125 | sub opendir { | |||
126 | usage "opendir(directory)" if @_ != 1; | |||
127 | my $dirhandle; | |||
128 | CORE::opendir($dirhandle, $_[0]) | |||
129 | ? $dirhandle | |||
130 | : undef; | |||
131 | } | |||
132 | ||||
133 | sub readdir { | |||
134 | usage "readdir(dirhandle)" if @_ != 1; | |||
135 | CORE::readdir($_[0]); | |||
136 | } | |||
137 | ||||
138 | sub rewinddir { | |||
139 | usage "rewinddir(dirhandle)" if @_ != 1; | |||
140 | CORE::rewinddir($_[0]); | |||
141 | } | |||
142 | ||||
143 | sub errno { | |||
144 | usage "errno()" if @_ != 0; | |||
145 | $! + 0; | |||
146 | } | |||
147 | ||||
148 | sub creat { | |||
149 | usage "creat(filename, mode)" if @_ != 2; | |||
150 | &open($_[0], &O_WRONLY | &O_CREAT | &O_TRUNC, $_[1]); | |||
151 | } | |||
152 | ||||
153 | sub fcntl { | |||
154 | usage "fcntl(filehandle, cmd, arg)" if @_ != 3; | |||
155 | CORE::fcntl($_[0], $_[1], $_[2]); | |||
156 | } | |||
157 | ||||
158 | sub getgrgid { | |||
159 | usage "getgrgid(gid)" if @_ != 1; | |||
160 | CORE::getgrgid($_[0]); | |||
161 | } | |||
162 | ||||
163 | sub getgrnam { | |||
164 | usage "getgrnam(name)" if @_ != 1; | |||
165 | CORE::getgrnam($_[0]); | |||
166 | } | |||
167 | ||||
168 | sub atan2 { | |||
169 | usage "atan2(x,y)" if @_ != 2; | |||
170 | CORE::atan2($_[0], $_[1]); | |||
171 | } | |||
172 | ||||
173 | sub cos { | |||
174 | usage "cos(x)" if @_ != 1; | |||
175 | CORE::cos($_[0]); | |||
176 | } | |||
177 | ||||
178 | sub exp { | |||
179 | usage "exp(x)" if @_ != 1; | |||
180 | CORE::exp($_[0]); | |||
181 | } | |||
182 | ||||
183 | sub fabs { | |||
184 | usage "fabs(x)" if @_ != 1; | |||
185 | CORE::abs($_[0]); | |||
186 | } | |||
187 | ||||
188 | sub log { | |||
189 | usage "log(x)" if @_ != 1; | |||
190 | CORE::log($_[0]); | |||
191 | } | |||
192 | ||||
193 | sub pow { | |||
194 | usage "pow(x,exponent)" if @_ != 2; | |||
195 | $_[0] ** $_[1]; | |||
196 | } | |||
197 | ||||
198 | sub sin { | |||
199 | usage "sin(x)" if @_ != 1; | |||
200 | CORE::sin($_[0]); | |||
201 | } | |||
202 | ||||
203 | sub sqrt { | |||
204 | usage "sqrt(x)" if @_ != 1; | |||
205 | CORE::sqrt($_[0]); | |||
206 | } | |||
207 | ||||
208 | sub getpwnam { | |||
209 | usage "getpwnam(name)" if @_ != 1; | |||
210 | CORE::getpwnam($_[0]); | |||
211 | } | |||
212 | ||||
213 | sub getpwuid { | |||
214 | usage "getpwuid(uid)" if @_ != 1; | |||
215 | CORE::getpwuid($_[0]); | |||
216 | } | |||
217 | ||||
218 | sub longjmp { | |||
219 | unimpl "longjmp() is C-specific: use die instead"; | |||
220 | } | |||
221 | ||||
222 | sub setjmp { | |||
223 | unimpl "setjmp() is C-specific: use eval {} instead"; | |||
224 | } | |||
225 | ||||
226 | sub siglongjmp { | |||
227 | unimpl "siglongjmp() is C-specific: use die instead"; | |||
228 | } | |||
229 | ||||
230 | sub sigsetjmp { | |||
231 | unimpl "sigsetjmp() is C-specific: use eval {} instead"; | |||
232 | } | |||
233 | ||||
234 | sub kill { | |||
235 | usage "kill(pid, sig)" if @_ != 2; | |||
236 | CORE::kill $_[1], $_[0]; | |||
237 | } | |||
238 | ||||
239 | sub raise { | |||
240 | usage "raise(sig)" if @_ != 1; | |||
241 | CORE::kill $_[0], $$; # Is this good enough? | |||
242 | } | |||
243 | ||||
244 | sub offsetof { | |||
245 | unimpl "offsetof() is C-specific, stopped"; | |||
246 | } | |||
247 | ||||
248 | sub clearerr { | |||
249 | redef "IO::Handle::clearerr()"; | |||
250 | } | |||
251 | ||||
252 | sub fclose { | |||
253 | redef "IO::Handle::close()"; | |||
254 | } | |||
255 | ||||
256 | sub fdopen { | |||
257 | redef "IO::Handle::new_from_fd()"; | |||
258 | } | |||
259 | ||||
260 | sub feof { | |||
261 | redef "IO::Handle::eof()"; | |||
262 | } | |||
263 | ||||
264 | sub fgetc { | |||
265 | redef "IO::Handle::getc()"; | |||
266 | } | |||
267 | ||||
268 | sub fgets { | |||
269 | redef "IO::Handle::gets()"; | |||
270 | } | |||
271 | ||||
272 | sub fileno { | |||
273 | redef "IO::Handle::fileno()"; | |||
274 | } | |||
275 | ||||
276 | sub fopen { | |||
277 | redef "IO::File::open()"; | |||
278 | } | |||
279 | ||||
280 | sub fprintf { | |||
281 | unimpl "fprintf() is C-specific--use printf instead"; | |||
282 | } | |||
283 | ||||
284 | sub fputc { | |||
285 | unimpl "fputc() is C-specific--use print instead"; | |||
286 | } | |||
287 | ||||
288 | sub fputs { | |||
289 | unimpl "fputs() is C-specific--use print instead"; | |||
290 | } | |||
291 | ||||
292 | sub fread { | |||
293 | unimpl "fread() is C-specific--use read instead"; | |||
294 | } | |||
295 | ||||
296 | sub freopen { | |||
297 | unimpl "freopen() is C-specific--use open instead"; | |||
298 | } | |||
299 | ||||
300 | sub fscanf { | |||
301 | unimpl "fscanf() is C-specific--use <> and regular expressions instead"; | |||
302 | } | |||
303 | ||||
304 | sub fseek { | |||
305 | redef "IO::Seekable::seek()"; | |||
306 | } | |||
307 | ||||
308 | sub fsync { | |||
309 | redef "IO::Handle::sync()"; | |||
310 | } | |||
311 | ||||
312 | sub ferror { | |||
313 | redef "IO::Handle::error()"; | |||
314 | } | |||
315 | ||||
316 | sub fflush { | |||
317 | redef "IO::Handle::flush()"; | |||
318 | } | |||
319 | ||||
320 | sub fgetpos { | |||
321 | redef "IO::Seekable::getpos()"; | |||
322 | } | |||
323 | ||||
324 | sub fsetpos { | |||
325 | redef "IO::Seekable::setpos()"; | |||
326 | } | |||
327 | ||||
328 | sub ftell { | |||
329 | redef "IO::Seekable::tell()"; | |||
330 | } | |||
331 | ||||
332 | sub fwrite { | |||
333 | unimpl "fwrite() is C-specific--use print instead"; | |||
334 | } | |||
335 | ||||
336 | sub getc { | |||
337 | usage "getc(handle)" if @_ != 1; | |||
338 | CORE::getc($_[0]); | |||
339 | } | |||
340 | ||||
341 | sub getchar { | |||
342 | usage "getchar()" if @_ != 0; | |||
343 | CORE::getc(STDIN); | |||
344 | } | |||
345 | ||||
346 | sub gets { | |||
347 | usage "gets()" if @_ != 0; | |||
348 | scalar <STDIN>; | |||
349 | } | |||
350 | ||||
351 | sub perror { | |||
352 | print STDERR "@_: " if @_; | |||
353 | print STDERR $!,"\n"; | |||
354 | } | |||
355 | ||||
356 | sub printf { | |||
357 | usage "printf(pattern, args...)" if @_ < 1; | |||
358 | CORE::printf STDOUT @_; | |||
359 | } | |||
360 | ||||
361 | sub putc { | |||
362 | unimpl "putc() is C-specific--use print instead"; | |||
363 | } | |||
364 | ||||
365 | sub putchar { | |||
366 | unimpl "putchar() is C-specific--use print instead"; | |||
367 | } | |||
368 | ||||
369 | sub puts { | |||
370 | unimpl "puts() is C-specific--use print instead"; | |||
371 | } | |||
372 | ||||
373 | sub remove { | |||
374 | usage "remove(filename)" if @_ != 1; | |||
375 | (-d $_[0]) ? CORE::rmdir($_[0]) : CORE::unlink($_[0]); | |||
376 | } | |||
377 | ||||
378 | sub rename { | |||
379 | usage "rename(oldfilename, newfilename)" if @_ != 2; | |||
380 | CORE::rename($_[0], $_[1]); | |||
381 | } | |||
382 | ||||
383 | sub rewind { | |||
384 | usage "rewind(filehandle)" if @_ != 1; | |||
385 | CORE::seek($_[0],0,0); | |||
386 | } | |||
387 | ||||
388 | sub scanf { | |||
389 | unimpl "scanf() is C-specific--use <> and regular expressions instead"; | |||
390 | } | |||
391 | ||||
392 | sub sprintf { | |||
393 | usage "sprintf(pattern,args)" if @_ == 0; | |||
394 | CORE::sprintf(shift,@_); | |||
395 | } | |||
396 | ||||
397 | sub sscanf { | |||
398 | unimpl "sscanf() is C-specific--use regular expressions instead"; | |||
399 | } | |||
400 | ||||
401 | sub tmpfile { | |||
402 | redef "IO::File::new_tmpfile()"; | |||
403 | } | |||
404 | ||||
405 | sub ungetc { | |||
406 | redef "IO::Handle::ungetc()"; | |||
407 | } | |||
408 | ||||
409 | sub vfprintf { | |||
410 | unimpl "vfprintf() is C-specific"; | |||
411 | } | |||
412 | ||||
413 | sub vprintf { | |||
414 | unimpl "vprintf() is C-specific"; | |||
415 | } | |||
416 | ||||
417 | sub vsprintf { | |||
418 | unimpl "vsprintf() is C-specific"; | |||
419 | } | |||
420 | ||||
421 | sub abs { | |||
422 | usage "abs(x)" if @_ != 1; | |||
423 | CORE::abs($_[0]); | |||
424 | } | |||
425 | ||||
426 | sub atexit { | |||
427 | unimpl "atexit() is C-specific: use END {} instead"; | |||
428 | } | |||
429 | ||||
430 | sub atof { | |||
431 | unimpl "atof() is C-specific, stopped"; | |||
432 | } | |||
433 | ||||
434 | sub atoi { | |||
435 | unimpl "atoi() is C-specific, stopped"; | |||
436 | } | |||
437 | ||||
438 | sub atol { | |||
439 | unimpl "atol() is C-specific, stopped"; | |||
440 | } | |||
441 | ||||
442 | sub bsearch { | |||
443 | unimpl "bsearch() not supplied"; | |||
444 | } | |||
445 | ||||
446 | sub calloc { | |||
447 | unimpl "calloc() is C-specific, stopped"; | |||
448 | } | |||
449 | ||||
450 | sub div { | |||
451 | unimpl "div() is C-specific, use /, % and int instead"; | |||
452 | } | |||
453 | ||||
454 | sub exit { | |||
455 | usage "exit(status)" if @_ != 1; | |||
456 | CORE::exit($_[0]); | |||
457 | } | |||
458 | ||||
459 | sub free { | |||
460 | unimpl "free() is C-specific, stopped"; | |||
461 | } | |||
462 | ||||
463 | sub getenv { | |||
464 | usage "getenv(name)" if @_ != 1; | |||
465 | $ENV{$_[0]}; | |||
466 | } | |||
467 | ||||
468 | sub labs { | |||
469 | unimpl "labs() is C-specific, use abs instead"; | |||
470 | } | |||
471 | ||||
472 | sub ldiv { | |||
473 | unimpl "ldiv() is C-specific, use /, % and int instead"; | |||
474 | } | |||
475 | ||||
476 | sub malloc { | |||
477 | unimpl "malloc() is C-specific, stopped"; | |||
478 | } | |||
479 | ||||
480 | sub qsort { | |||
481 | unimpl "qsort() is C-specific, use sort instead"; | |||
482 | } | |||
483 | ||||
484 | sub rand { | |||
485 | unimpl "rand() is non-portable, use Perl's rand instead"; | |||
486 | } | |||
487 | ||||
488 | sub realloc { | |||
489 | unimpl "realloc() is C-specific, stopped"; | |||
490 | } | |||
491 | ||||
492 | sub srand { | |||
493 | unimpl "srand()"; | |||
494 | } | |||
495 | ||||
496 | sub system { | |||
497 | usage "system(command)" if @_ != 1; | |||
498 | CORE::system($_[0]); | |||
499 | } | |||
500 | ||||
501 | sub memchr { | |||
502 | unimpl "memchr() is C-specific, use index() instead"; | |||
503 | } | |||
504 | ||||
505 | sub memcmp { | |||
506 | unimpl "memcmp() is C-specific, use eq instead"; | |||
507 | } | |||
508 | ||||
509 | sub memcpy { | |||
510 | unimpl "memcpy() is C-specific, use = instead"; | |||
511 | } | |||
512 | ||||
513 | sub memmove { | |||
514 | unimpl "memmove() is C-specific, use = instead"; | |||
515 | } | |||
516 | ||||
517 | sub memset { | |||
518 | unimpl "memset() is C-specific, use x instead"; | |||
519 | } | |||
520 | ||||
521 | sub strcat { | |||
522 | unimpl "strcat() is C-specific, use .= instead"; | |||
523 | } | |||
524 | ||||
525 | sub strchr { | |||
526 | unimpl "strchr() is C-specific, use index() instead"; | |||
527 | } | |||
528 | ||||
529 | sub strcmp { | |||
530 | unimpl "strcmp() is C-specific, use eq instead"; | |||
531 | } | |||
532 | ||||
533 | sub strcpy { | |||
534 | unimpl "strcpy() is C-specific, use = instead"; | |||
535 | } | |||
536 | ||||
537 | sub strcspn { | |||
538 | unimpl "strcspn() is C-specific, use regular expressions instead"; | |||
539 | } | |||
540 | ||||
541 | sub strerror { | |||
542 | usage "strerror(errno)" if @_ != 1; | |||
543 | local $! = $_[0]; | |||
544 | $! . ""; | |||
545 | } | |||
546 | ||||
547 | sub strlen { | |||
548 | unimpl "strlen() is C-specific, use length instead"; | |||
549 | } | |||
550 | ||||
551 | sub strncat { | |||
552 | unimpl "strncat() is C-specific, use .= instead"; | |||
553 | } | |||
554 | ||||
555 | sub strncmp { | |||
556 | unimpl "strncmp() is C-specific, use eq instead"; | |||
557 | } | |||
558 | ||||
559 | sub strncpy { | |||
560 | unimpl "strncpy() is C-specific, use = instead"; | |||
561 | } | |||
562 | ||||
563 | sub strpbrk { | |||
564 | unimpl "strpbrk() is C-specific, stopped"; | |||
565 | } | |||
566 | ||||
567 | sub strrchr { | |||
568 | unimpl "strrchr() is C-specific, use rindex() instead"; | |||
569 | } | |||
570 | ||||
571 | sub strspn { | |||
572 | unimpl "strspn() is C-specific, stopped"; | |||
573 | } | |||
574 | ||||
575 | sub strstr { | |||
576 | usage "strstr(big, little)" if @_ != 2; | |||
577 | CORE::index($_[0], $_[1]); | |||
578 | } | |||
579 | ||||
580 | sub strtok { | |||
581 | unimpl "strtok() is C-specific, stopped"; | |||
582 | } | |||
583 | ||||
584 | sub chmod { | |||
585 | usage "chmod(mode, filename)" if @_ != 2; | |||
586 | CORE::chmod($_[0], $_[1]); | |||
587 | } | |||
588 | ||||
589 | sub fstat { | |||
590 | usage "fstat(fd)" if @_ != 1; | |||
591 | local *TMP; | |||
592 | CORE::open(TMP, "<&$_[0]"); # Gross. | |||
593 | my @l = CORE::stat(TMP); | |||
594 | CORE::close(TMP); | |||
595 | @l; | |||
596 | } | |||
597 | ||||
598 | sub mkdir { | |||
599 | usage "mkdir(directoryname, mode)" if @_ != 2; | |||
600 | CORE::mkdir($_[0], $_[1]); | |||
601 | } | |||
602 | ||||
603 | sub stat { | |||
604 | usage "stat(filename)" if @_ != 1; | |||
605 | CORE::stat($_[0]); | |||
606 | } | |||
607 | ||||
608 | sub umask { | |||
609 | usage "umask(mask)" if @_ != 1; | |||
610 | CORE::umask($_[0]); | |||
611 | } | |||
612 | ||||
613 | sub wait { | |||
614 | usage "wait()" if @_ != 0; | |||
615 | CORE::wait(); | |||
616 | } | |||
617 | ||||
618 | sub waitpid { | |||
619 | usage "waitpid(pid, options)" if @_ != 2; | |||
620 | CORE::waitpid($_[0], $_[1]); | |||
621 | } | |||
622 | ||||
623 | sub gmtime { | |||
624 | usage "gmtime(time)" if @_ != 1; | |||
625 | CORE::gmtime($_[0]); | |||
626 | } | |||
627 | ||||
628 | sub localtime { | |||
629 | usage "localtime(time)" if @_ != 1; | |||
630 | CORE::localtime($_[0]); | |||
631 | } | |||
632 | ||||
633 | sub time { | |||
634 | usage "time()" if @_ != 0; | |||
635 | CORE::time; | |||
636 | } | |||
637 | ||||
638 | sub alarm { | |||
639 | usage "alarm(seconds)" if @_ != 1; | |||
640 | CORE::alarm($_[0]); | |||
641 | } | |||
642 | ||||
643 | sub chdir { | |||
644 | usage "chdir(directory)" if @_ != 1; | |||
645 | CORE::chdir($_[0]); | |||
646 | } | |||
647 | ||||
648 | sub chown { | |||
649 | usage "chown(uid, gid, filename)" if @_ != 3; | |||
650 | CORE::chown($_[0], $_[1], $_[2]); | |||
651 | } | |||
652 | ||||
653 | sub execl { | |||
654 | unimpl "execl() is C-specific, stopped"; | |||
655 | } | |||
656 | ||||
657 | sub execle { | |||
658 | unimpl "execle() is C-specific, stopped"; | |||
659 | } | |||
660 | ||||
661 | sub execlp { | |||
662 | unimpl "execlp() is C-specific, stopped"; | |||
663 | } | |||
664 | ||||
665 | sub execv { | |||
666 | unimpl "execv() is C-specific, stopped"; | |||
667 | } | |||
668 | ||||
669 | sub execve { | |||
670 | unimpl "execve() is C-specific, stopped"; | |||
671 | } | |||
672 | ||||
673 | sub execvp { | |||
674 | unimpl "execvp() is C-specific, stopped"; | |||
675 | } | |||
676 | ||||
677 | sub fork { | |||
678 | usage "fork()" if @_ != 0; | |||
679 | CORE::fork; | |||
680 | } | |||
681 | ||||
682 | sub getegid { | |||
683 | usage "getegid()" if @_ != 0; | |||
684 | $) + 0; | |||
685 | } | |||
686 | ||||
687 | sub geteuid { | |||
688 | usage "geteuid()" if @_ != 0; | |||
689 | $> + 0; | |||
690 | } | |||
691 | ||||
692 | sub getgid { | |||
693 | usage "getgid()" if @_ != 0; | |||
694 | $( + 0; | |||
695 | } | |||
696 | ||||
697 | sub getgroups { | |||
698 | usage "getgroups()" if @_ != 0; | |||
699 | my %seen; | |||
700 | grep(!$seen{$_}++, split(' ', $) )); | |||
701 | } | |||
702 | ||||
703 | sub getlogin { | |||
704 | usage "getlogin()" if @_ != 0; | |||
705 | CORE::getlogin(); | |||
706 | } | |||
707 | ||||
708 | sub getpgrp { | |||
709 | usage "getpgrp()" if @_ != 0; | |||
710 | CORE::getpgrp; | |||
711 | } | |||
712 | ||||
713 | sub getpid { | |||
714 | usage "getpid()" if @_ != 0; | |||
715 | $$; | |||
716 | } | |||
717 | ||||
718 | sub getppid { | |||
719 | usage "getppid()" if @_ != 0; | |||
720 | CORE::getppid; | |||
721 | } | |||
722 | ||||
723 | sub getuid { | |||
724 | usage "getuid()" if @_ != 0; | |||
725 | $<; | |||
726 | } | |||
727 | ||||
728 | sub isatty { | |||
729 | usage "isatty(filehandle)" if @_ != 1; | |||
730 | -t $_[0]; | |||
731 | } | |||
732 | ||||
733 | sub link { | |||
734 | usage "link(oldfilename, newfilename)" if @_ != 2; | |||
735 | CORE::link($_[0], $_[1]); | |||
736 | } | |||
737 | ||||
738 | sub rmdir { | |||
739 | usage "rmdir(directoryname)" if @_ != 1; | |||
740 | CORE::rmdir($_[0]); | |||
741 | } | |||
742 | ||||
743 | sub setbuf { | |||
744 | redef "IO::Handle::setbuf()"; | |||
745 | } | |||
746 | ||||
747 | sub setvbuf { | |||
748 | redef "IO::Handle::setvbuf()"; | |||
749 | } | |||
750 | ||||
751 | sub sleep { | |||
752 | usage "sleep(seconds)" if @_ != 1; | |||
753 | $_[0] - CORE::sleep($_[0]); | |||
754 | } | |||
755 | ||||
756 | sub unlink { | |||
757 | usage "unlink(filename)" if @_ != 1; | |||
758 | CORE::unlink($_[0]); | |||
759 | } | |||
760 | ||||
761 | sub utime { | |||
762 | usage "utime(filename, atime, mtime)" if @_ != 3; | |||
763 | CORE::utime($_[1], $_[2], $_[0]); | |||
764 | } | |||
765 | ||||
766 | sub load_imports { | |||
767 | %EXPORT_TAGS = ( | |||
768 | ||||
769 | assert_h => [qw(assert NDEBUG)], | |||
770 | ||||
771 | ctype_h => [qw(isalnum isalpha iscntrl isdigit isgraph islower | |||
772 | isprint ispunct isspace isupper isxdigit tolower toupper)], | |||
773 | ||||
774 | dirent_h => [], | |||
775 | ||||
776 | errno_h => [qw(E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT | |||
777 | EAGAIN EALREADY EBADF EBUSY ECHILD ECONNABORTED | |||
778 | ECONNREFUSED ECONNRESET EDEADLK EDESTADDRREQ EDOM EDQUOT | |||
779 | EEXIST EFAULT EFBIG EHOSTDOWN EHOSTUNREACH EINPROGRESS | |||
780 | EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK | |||
781 | EMSGSIZE ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH | |||
782 | ENFILE ENOBUFS ENODEV ENOENT ENOEXEC ENOLCK ENOMEM | |||
783 | ENOPROTOOPT ENOSPC ENOSYS ENOTBLK ENOTCONN ENOTDIR | |||
784 | ENOTEMPTY ENOTSOCK ENOTTY ENXIO EOPNOTSUPP EPERM | |||
785 | EPFNOSUPPORT EPIPE EPROCLIM EPROTONOSUPPORT EPROTOTYPE | |||
786 | ERANGE EREMOTE ERESTART EROFS ESHUTDOWN ESOCKTNOSUPPORT | |||
787 | ESPIPE ESRCH ESTALE ETIMEDOUT ETOOMANYREFS ETXTBSY | |||
788 | EUSERS EWOULDBLOCK EXDEV errno)], | |||
789 | ||||
790 | fcntl_h => [qw(FD_CLOEXEC F_DUPFD F_GETFD F_GETFL F_GETLK F_RDLCK | |||
791 | F_SETFD F_SETFL F_SETLK F_SETLKW F_UNLCK F_WRLCK | |||
792 | O_ACCMODE O_APPEND O_CREAT O_EXCL O_NOCTTY O_NONBLOCK | |||
793 | O_RDONLY O_RDWR O_TRUNC O_WRONLY | |||
794 | creat | |||
795 | SEEK_CUR SEEK_END SEEK_SET | |||
796 | S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU | |||
797 | S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG S_ISUID | |||
798 | S_IWGRP S_IWOTH S_IWUSR)], | |||
799 | ||||
800 | float_h => [qw(DBL_DIG DBL_EPSILON DBL_MANT_DIG | |||
801 | DBL_MAX DBL_MAX_10_EXP DBL_MAX_EXP | |||
802 | DBL_MIN DBL_MIN_10_EXP DBL_MIN_EXP | |||
803 | FLT_DIG FLT_EPSILON FLT_MANT_DIG | |||
804 | FLT_MAX FLT_MAX_10_EXP FLT_MAX_EXP | |||
805 | FLT_MIN FLT_MIN_10_EXP FLT_MIN_EXP | |||
806 | FLT_RADIX FLT_ROUNDS | |||
807 | LDBL_DIG LDBL_EPSILON LDBL_MANT_DIG | |||
808 | LDBL_MAX LDBL_MAX_10_EXP LDBL_MAX_EXP | |||
809 | LDBL_MIN LDBL_MIN_10_EXP LDBL_MIN_EXP)], | |||
810 | ||||
811 | grp_h => [], | |||
812 | ||||
813 | limits_h => [qw( ARG_MAX CHAR_BIT CHAR_MAX CHAR_MIN CHILD_MAX | |||
814 | INT_MAX INT_MIN LINK_MAX LONG_MAX LONG_MIN MAX_CANON | |||
815 | MAX_INPUT MB_LEN_MAX NAME_MAX NGROUPS_MAX OPEN_MAX | |||
816 | PATH_MAX PIPE_BUF SCHAR_MAX SCHAR_MIN SHRT_MAX SHRT_MIN | |||
817 | SSIZE_MAX STREAM_MAX TZNAME_MAX UCHAR_MAX UINT_MAX | |||
818 | ULONG_MAX USHRT_MAX _POSIX_ARG_MAX _POSIX_CHILD_MAX | |||
819 | _POSIX_LINK_MAX _POSIX_MAX_CANON _POSIX_MAX_INPUT | |||
820 | _POSIX_NAME_MAX _POSIX_NGROUPS_MAX _POSIX_OPEN_MAX | |||
821 | _POSIX_PATH_MAX _POSIX_PIPE_BUF _POSIX_SSIZE_MAX | |||
822 | _POSIX_STREAM_MAX _POSIX_TZNAME_MAX)], | |||
823 | ||||
824 | locale_h => [qw(LC_ALL LC_COLLATE LC_CTYPE LC_MESSAGES | |||
825 | LC_MONETARY LC_NUMERIC LC_TIME NULL | |||
826 | localeconv setlocale)], | |||
827 | ||||
828 | math_h => [qw(HUGE_VAL acos asin atan ceil cosh fabs floor fmod | |||
829 | frexp ldexp log10 modf pow sinh tan tanh)], | |||
830 | ||||
831 | pwd_h => [], | |||
832 | ||||
833 | setjmp_h => [qw(longjmp setjmp siglongjmp sigsetjmp)], | |||
834 | ||||
835 | signal_h => [qw(SA_NOCLDSTOP SA_NOCLDWAIT SA_NODEFER SA_ONSTACK | |||
836 | SA_RESETHAND SA_RESTART SA_SIGINFO SIGABRT SIGALRM | |||
837 | SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL | |||
838 | SIGPIPE %SIGRT SIGRTMIN SIGRTMAX SIGQUIT SIGSEGV SIGSTOP | |||
839 | SIGTERM SIGTSTP SIGTTIN SIGTTOU SIGUSR1 SIGUSR2 | |||
840 | SIG_BLOCK SIG_DFL SIG_ERR SIG_IGN SIG_SETMASK SIG_UNBLOCK | |||
841 | raise sigaction signal sigpending sigprocmask sigsuspend)], | |||
842 | ||||
843 | stdarg_h => [], | |||
844 | ||||
845 | stddef_h => [qw(NULL offsetof)], | |||
846 | ||||
847 | stdio_h => [qw(BUFSIZ EOF FILENAME_MAX L_ctermid L_cuserid | |||
848 | L_tmpname NULL SEEK_CUR SEEK_END SEEK_SET | |||
849 | STREAM_MAX TMP_MAX stderr stdin stdout | |||
850 | clearerr fclose fdopen feof ferror fflush fgetc fgetpos | |||
851 | fgets fopen fprintf fputc fputs fread freopen | |||
852 | fscanf fseek fsetpos ftell fwrite getchar gets | |||
853 | perror putc putchar puts remove rewind | |||
854 | scanf setbuf setvbuf sscanf tmpfile tmpnam | |||
855 | ungetc vfprintf vprintf vsprintf)], | |||
856 | ||||
857 | stdlib_h => [qw(EXIT_FAILURE EXIT_SUCCESS MB_CUR_MAX NULL RAND_MAX | |||
858 | abort atexit atof atoi atol bsearch calloc div | |||
859 | free getenv labs ldiv malloc mblen mbstowcs mbtowc | |||
860 | qsort realloc strtod strtol strtoul wcstombs wctomb)], | |||
861 | ||||
862 | string_h => [qw(NULL memchr memcmp memcpy memmove memset strcat | |||
863 | strchr strcmp strcoll strcpy strcspn strerror strlen | |||
864 | strncat strncmp strncpy strpbrk strrchr strspn strstr | |||
865 | strtok strxfrm)], | |||
866 | ||||
867 | sys_stat_h => [qw(S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU | |||
868 | S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG | |||
869 | S_ISUID S_IWGRP S_IWOTH S_IWUSR S_IXGRP S_IXOTH S_IXUSR | |||
870 | fstat mkfifo)], | |||
871 | ||||
872 | sys_times_h => [], | |||
873 | ||||
874 | sys_types_h => [], | |||
875 | ||||
876 | sys_utsname_h => [qw(uname)], | |||
877 | ||||
878 | sys_wait_h => [qw(WEXITSTATUS WIFEXITED WIFSIGNALED WIFSTOPPED | |||
879 | WNOHANG WSTOPSIG WTERMSIG WUNTRACED)], | |||
880 | ||||
881 | termios_h => [qw( B0 B110 B1200 B134 B150 B1800 B19200 B200 B2400 | |||
882 | B300 B38400 B4800 B50 B600 B75 B9600 BRKINT CLOCAL | |||
883 | CREAD CS5 CS6 CS7 CS8 CSIZE CSTOPB ECHO ECHOE ECHOK | |||
884 | ECHONL HUPCL ICANON ICRNL IEXTEN IGNBRK IGNCR IGNPAR | |||
885 | INLCR INPCK ISIG ISTRIP IXOFF IXON NCCS NOFLSH OPOST | |||
886 | PARENB PARMRK PARODD TCIFLUSH TCIOFF TCIOFLUSH TCION | |||
887 | TCOFLUSH TCOOFF TCOON TCSADRAIN TCSAFLUSH TCSANOW | |||
888 | TOSTOP VEOF VEOL VERASE VINTR VKILL VMIN VQUIT VSTART | |||
889 | VSTOP VSUSP VTIME | |||
890 | cfgetispeed cfgetospeed cfsetispeed cfsetospeed tcdrain | |||
891 | tcflow tcflush tcgetattr tcsendbreak tcsetattr )], | |||
892 | ||||
893 | time_h => [qw(CLK_TCK CLOCKS_PER_SEC NULL asctime clock ctime | |||
894 | difftime mktime strftime tzset tzname)], | |||
895 | ||||
896 | unistd_h => [qw(F_OK NULL R_OK SEEK_CUR SEEK_END SEEK_SET | |||
897 | STDERR_FILENO STDIN_FILENO STDOUT_FILENO W_OK X_OK | |||
898 | _PC_CHOWN_RESTRICTED _PC_LINK_MAX _PC_MAX_CANON | |||
899 | _PC_MAX_INPUT _PC_NAME_MAX _PC_NO_TRUNC _PC_PATH_MAX | |||
900 | _PC_PIPE_BUF _PC_VDISABLE _POSIX_CHOWN_RESTRICTED | |||
901 | _POSIX_JOB_CONTROL _POSIX_NO_TRUNC _POSIX_SAVED_IDS | |||
902 | _POSIX_VDISABLE _POSIX_VERSION _SC_ARG_MAX | |||
903 | _SC_CHILD_MAX _SC_CLK_TCK _SC_JOB_CONTROL | |||
904 | _SC_NGROUPS_MAX _SC_OPEN_MAX _SC_PAGESIZE _SC_SAVED_IDS | |||
905 | _SC_STREAM_MAX _SC_TZNAME_MAX _SC_VERSION | |||
906 | _exit access ctermid cuserid | |||
907 | dup2 dup execl execle execlp execv execve execvp | |||
908 | fpathconf fsync getcwd getegid geteuid getgid getgroups | |||
909 | getpid getuid isatty lseek pathconf pause setgid setpgid | |||
910 | setsid setuid sysconf tcgetpgrp tcsetpgrp ttyname)], | |||
911 | ||||
912 | utime_h => [], | |||
913 | ||||
914 | ); | |||
915 | ||||
916 | # Exporter::export_tags(); | |||
917 | { | |||
918 | # De-duplicate the export list: | |||
919 | my %export; | |||
920 | @export{map {@$_} values %EXPORT_TAGS} = (); | |||
921 | # Doing the de-dup with a temporary hash has the advantage that the SVs in | |||
922 | # @EXPORT are actually shared hash key sacalars, which will save some memory. | |||
923 | push @EXPORT, keys %export; | |||
924 | } | |||
925 | ||||
926 | @EXPORT_OK = qw( | |||
927 | abs | |||
928 | alarm | |||
929 | atan2 | |||
930 | chdir | |||
931 | chmod | |||
932 | chown | |||
933 | close | |||
934 | closedir | |||
935 | cos | |||
936 | exit | |||
937 | exp | |||
938 | fcntl | |||
939 | fileno | |||
940 | fork | |||
941 | getc | |||
942 | getgrgid | |||
943 | getgrnam | |||
944 | getlogin | |||
945 | getpgrp | |||
946 | getppid | |||
947 | getpwnam | |||
948 | getpwuid | |||
949 | gmtime | |||
950 | isatty | |||
951 | kill | |||
952 | lchown | |||
953 | link | |||
954 | localtime | |||
955 | log | |||
956 | mkdir | |||
957 | nice | |||
958 | open | |||
959 | opendir | |||
960 | pipe | |||
961 | printf | |||
962 | rand | |||
963 | read | |||
964 | readdir | |||
965 | rename | |||
966 | rewinddir | |||
967 | rmdir | |||
968 | sin | |||
969 | sleep | |||
970 | sprintf | |||
971 | sqrt | |||
972 | srand | |||
973 | stat | |||
974 | system | |||
975 | time | |||
976 | times | |||
977 | umask | |||
978 | unlink | |||
979 | utime | |||
980 | wait | |||
981 | waitpid | |||
982 | write | |||
983 | ); | |||
984 | ||||
985 | require Exporter; | |||
986 | } | |||
987 | ||||
988 | package POSIX::SigAction; | |||
989 | ||||
990 | sub new { bless {HANDLER => $_[1], MASK => $_[2], FLAGS => $_[3] || 0, SAFE => 0}, $_[0] } | |||
991 | sub handler { $_[0]->{HANDLER} = $_[1] if @_ > 1; $_[0]->{HANDLER} }; | |||
992 | sub mask { $_[0]->{MASK} = $_[1] if @_ > 1; $_[0]->{MASK} }; | |||
993 | sub flags { $_[0]->{FLAGS} = $_[1] if @_ > 1; $_[0]->{FLAGS} }; | |||
994 | sub safe { $_[0]->{SAFE} = $_[1] if @_ > 1; $_[0]->{SAFE} }; | |||
995 | ||||
996 | package POSIX::SigRt; | |||
997 | ||||
998 | ||||
999 | sub _init { | |||
1000 | $_SIGRTMIN = &POSIX::SIGRTMIN; | |||
1001 | $_SIGRTMAX = &POSIX::SIGRTMAX; | |||
1002 | $_sigrtn = $_SIGRTMAX - $_SIGRTMIN; | |||
1003 | } | |||
1004 | ||||
1005 | sub _croak { | |||
1006 | &_init unless defined $_sigrtn; | |||
1007 | die "POSIX::SigRt not available" unless defined $_sigrtn && $_sigrtn > 0; | |||
1008 | } | |||
1009 | ||||
1010 | sub _getsig { | |||
1011 | &_croak; | |||
1012 | my $rtsig = $_[0]; | |||
1013 | # Allow (SIGRT)?MIN( + n)?, a common idiom when doing these things in C. | |||
1014 | $rtsig = $_SIGRTMIN + ($1 || 0) | |||
1015 | if $rtsig =~ /^(?:(?:SIG)?RT)?MIN(\s*\+\s*(\d+))?$/; | |||
1016 | return $rtsig; | |||
1017 | } | |||
1018 | ||||
1019 | sub _exist { | |||
1020 | my $rtsig = _getsig($_[1]); | |||
1021 | my $ok = $rtsig >= $_SIGRTMIN && $rtsig <= $_SIGRTMAX; | |||
1022 | ($rtsig, $ok); | |||
1023 | } | |||
1024 | ||||
1025 | sub _check { | |||
1026 | my ($rtsig, $ok) = &_exist; | |||
1027 | die "No POSIX::SigRt signal $_[1] (valid range SIGRTMIN..SIGRTMAX, or $_SIGRTMIN..$_SIGRTMAX)" | |||
1028 | unless $ok; | |||
1029 | return $rtsig; | |||
1030 | } | |||
1031 | ||||
1032 | sub new { | |||
1033 | my ($rtsig, $handler, $flags) = @_; | |||
1034 | my $sigset = POSIX::SigSet->new($rtsig); | |||
1035 | my $sigact = POSIX::SigAction->new($handler, | |||
1036 | $sigset, | |||
1037 | $flags); | |||
1038 | POSIX::sigaction($rtsig, $sigact); | |||
1039 | } | |||
1040 | ||||
1041 | sub EXISTS { &_exist } | |||
1042 | sub FETCH { my $rtsig = &_check; | |||
1043 | my $oa = POSIX::SigAction->new(); | |||
1044 | POSIX::sigaction($rtsig, undef, $oa); | |||
1045 | return $oa->{HANDLER} } | |||
1046 | sub STORE { my $rtsig = &_check; new($rtsig, $_[2], $SIGACTION_FLAGS) } | |||
1047 | sub DELETE { delete $SIG{ &_check } } | |||
1048 | sub CLEAR { &_exist; delete @SIG{ &POSIX::SIGRTMIN .. &POSIX::SIGRTMAX } } | |||
1049 | sub SCALAR { &_croak; $_sigrtn + 1 } | |||
# spent 18.7s within POSIX::acos which was called 5980967 times, avg 3µs/call:
# 5980967 times (18.7s+0) by WISE::CoUtils::angdist at line 203 of /wise/base/deliv/dev/lib/perl/WISE/CoUtils.pm, avg 3µs/call | ||||
# spent 62.8ms within POSIX::asin which was called 13869 times, avg 5µs/call:
# 13869 times (62.8ms+0) by Astro::Coord::r2pol at line 170 of /wise/base/static/lib/perl5/site_perl/5.10.0/Astro/Coord.pm, avg 5µs/call | ||||
# spent 496µs within POSIX::strftime which was called 4 times, avg 124µs/call:
# 4 times (496µs+0) by WISE::UtilsLight::mytime at line 238 of /wise/base/deliv/dev/lib/perl/WISE/UtilsLight.pm, avg 124µs/call |