5 #include <minix/callnr.h>
6 #include <minix/type.h>
7 #include <minix/config.h>
12 #include <archconst.h>
16 /*===========================================================================*
18 *===========================================================================*/
19 PUBLIC
int do_adddma()
21 endpoint_t req_proc_e
, target_proc_e
;
23 phys_bytes base
, size
;
25 if (mp
->mp_effuid
!= SUPER_USER
)
28 req_proc_e
= m_in
.m_source
;
29 target_proc_e
= m_in
.m2_i1
;
33 if((r
= vm_adddma(req_proc_e
, target_proc_e
, base
, size
)) != OK
) {
34 printf("pm:do_adddma: vm_adddma failed (%d)\n", r
);
38 /* Find target process */
39 if (pm_isokendpt(target_proc_e
, &proc_n
) != OK
)
41 printf("pm:do_adddma: endpoint %d not found\n", target_proc_e
);
48 /*===========================================================================*
50 *===========================================================================*/
51 PUBLIC
int do_deldma()
53 endpoint_t req_proc_e
, target_proc_e
;
54 phys_bytes base
, size
;
56 if (mp
->mp_effuid
!= SUPER_USER
)
59 req_proc_e
= m_in
.m_source
;
60 target_proc_e
= m_in
.m2_i1
;
64 return vm_deldma(req_proc_e
, target_proc_e
, base
, size
);
67 /*===========================================================================*
69 *===========================================================================*/
70 PUBLIC
int do_getdma()
72 endpoint_t req_proc_e
, proc
;
74 phys_bytes base
, size
;
76 if (mp
->mp_effuid
!= SUPER_USER
)
79 req_proc_e
= m_in
.m_source
;
81 if((r
=vm_getdma(req_proc_e
, &proc
, &base
, &size
)) != OK
)
84 printf("pm:do_getdma: setting reply to 0x%lx@0x%lx proc %d\n",
87 mp
->mp_reply
.m2_i1
= proc
;
88 mp
->mp_reply
.m2_l1
= base
;
89 mp
->mp_reply
.m2_l2
= size
;