Forgotten changes that should have been part of the r45368 64-bit fix.
[AROS.git] / rom / filesys / console_handler / resident.c
blob95b065a07196570261df910a2736faceb6cdf66c
1 #include <aros/debug.h>
2 #include <aros/symbolsets.h>
3 #include <exec/resident.h>
4 #include <exec/alerts.h>
5 #include <dos/dosextens.h>
6 #include <dos/filehandler.h>
7 #include <proto/exec.h>
8 #include <proto/dos.h>
10 #define HANDLER_NAME "con-handler"
11 #define VERSION 41
12 #define REVISION 5
14 #define _STR(A) #A
15 #define STR(A) _STR(A)
17 extern LONG CONMain(void);
19 static const TEXT dev_name_con[] = "CON";
20 static const TEXT dev_name_raw[] = "RAW";
22 extern void con_End(void);
23 static const TEXT version_string[];
25 static AROS_UFP3 (APTR, con_Init,
26 AROS_UFPA(APTR, unused, D0),
27 AROS_UFPA(BPTR, segList, A0),
28 AROS_UFPA(struct ExecBase *, sysBase, A6));
30 const struct Resident con_romtag =
32 RTC_MATCHWORD,
33 (struct Resident *)&con_romtag,
34 (APTR)&con_End,
35 RTF_AFTERDOS,
36 VERSION,
37 NT_PROCESS,
38 -124,
39 HANDLER_NAME,
40 (STRPTR)version_string,
41 con_Init
44 static const TEXT version_string[] = HANDLER_NAME " " STR(VERSION) "." STR(REVISION) " (" ADATE ")\n";
46 static AROS_UFH3 (APTR, con_Init,
47 AROS_UFHA(APTR, unused, D0),
48 AROS_UFHA(BPTR, segList, A0),
49 AROS_UFHA(struct ExecBase *, SysBase, A6))
51 AROS_USERFUNC_INIT
53 struct DosLibrary *DOSBase;
54 struct DeviceNode *dev_node;
55 BPTR conseg;
57 DOSBase = (struct DosLibrary *)OpenLibrary("dos.library", 0);
58 if (DOSBase == NULL)
59 Alert(AG_OpenLib | AO_DOSLib);
61 /* Create device node and add it to the system. The handler will then be
62 started when it is first accessed */
63 conseg = CreateSegList(CONMain);
64 if (conseg == BNULL)
65 Alert(AT_DeadEnd | AG_NoMemory);
67 dev_node = (APTR)MakeDosEntry(dev_name_con, DLT_DEVICE);
68 if(dev_node == NULL)
69 Alert(AT_DeadEnd | AG_NoMemory);
71 dev_node->dn_StackSize = AROS_STACKSIZE;
72 dev_node->dn_SegList = conseg;
73 dev_node->dn_Startup = 0;
74 dev_node->dn_Priority = 5;
75 dev_node->dn_GlobalVec = (BPTR)(SIPTR)-1;
76 if(!AddDosEntry((APTR)dev_node))
77 Alert(AT_DeadEnd);
79 dev_node = (APTR)MakeDosEntry(dev_name_raw, DLT_DEVICE);
80 if(dev_node == NULL)
81 Alert(AT_DeadEnd | AG_NoMemory);
82 dev_node->dn_StackSize = AROS_STACKSIZE;
83 dev_node->dn_SegList = conseg;
84 dev_node->dn_Startup = (BPTR)1;
85 dev_node->dn_Priority = 5;
86 dev_node->dn_GlobalVec = (BPTR)(SIPTR)-1;
87 if(!AddDosEntry((APTR)dev_node))
88 Alert(AT_DeadEnd);
90 D(bug("CON: and RAW: added\n"));
92 CloseLibrary(&DOSBase->dl_lib);
93 return NULL;
95 AROS_USERFUNC_EXIT