This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
amigaos4: use raise() instead of kill() on ourselves
[perl5.git] / amigaos4 / amigaio.h
1 #ifndef _AMIGAIO_H
2 #define _AMIGAIO_H
3
4 #ifndef H_PERL
5 #include "../perl.h"
6 #endif
7
8 struct StdioStore
9 {
10         /* astdin...astderr are the amigaos file descriptors */
11         long astdin;
12         long astdout;
13         long astderr;
14         /* oldstdin...oldstderr are the amigados file handles */
15         long oldstdin;
16         long oldstdout;
17         long oldstderr;
18 };
19
20 typedef struct StdioStore StdioStore;
21
22 /* get the amigaos file descriptors */
23 void amigaos_stdio_get(pTHX_ StdioStore *store);
24
25 /* save the amigados file handles (calls amigaos_stdio_get) */
26 void amigaos_stdio_save(pTHX_ StdioStore *store);
27
28 /* restore the amigados file handles stored with amigaos_stdio_save */
29 void amigaos_stdio_restore(pTHX_ const StdioStore *store);
30
31 /* everything the child needs from the parent is in UserData,
32  * then pass it through task->tc_UserData or as arg to new pthread */
33 struct UserData
34 {
35         struct Task *parent;
36         I32 did_pipes;
37         int pp;
38         SV **sp;
39         SV **mark;
40         PerlInterpreter *my_perl;
41 };
42
43 void amigaos_fork_set_userdata(
44     pTHX_ struct UserData *userdata, I32 did_pipes, int pp, SV **sp, SV **mark);
45
46 void *amigaos_system_child(void *userdata);
47
48 void amigaos_post_exec(int fd, int do_report);
49
50 Pid_t amigaos_fork();
51 Pid_t amigaos_waitpid(pTHX_ int optype, Pid_t pid, void *argflags);
52
53 #endif