5 #include <minix/callnr.h>
6 #include <minix/type.h>
7 #include <minix/config.h>
15 /*===========================================================================*
17 *===========================================================================*/
18 PUBLIC
int do_adddma()
20 endpoint_t req_proc_e
, target_proc_e
;
22 phys_bytes base
, size
;
24 if (mp
->mp_effuid
!= SUPER_USER
)
27 req_proc_e
= m_in
.m_source
;
28 target_proc_e
= m_in
.m2_i1
;
32 if((r
= vm_adddma(req_proc_e
, target_proc_e
, base
, size
)) != OK
) {
33 printf("pm:do_adddma: vm_adddma failed (%d)\n", r
);
37 /* Find target process */
38 if (pm_isokendpt(target_proc_e
, &proc_n
) != OK
)
40 printf("pm:do_adddma: endpoint %d not found\n", target_proc_e
);
47 /*===========================================================================*
49 *===========================================================================*/
50 PUBLIC
int do_deldma()
52 endpoint_t req_proc_e
, target_proc_e
;
53 phys_bytes base
, size
;
55 if (mp
->mp_effuid
!= SUPER_USER
)
58 req_proc_e
= m_in
.m_source
;
59 target_proc_e
= m_in
.m2_i1
;
63 return vm_deldma(req_proc_e
, target_proc_e
, base
, size
);
66 /*===========================================================================*
68 *===========================================================================*/
69 PUBLIC
int do_getdma()
71 endpoint_t req_proc_e
, proc
;
73 phys_bytes base
, size
;
75 if (mp
->mp_effuid
!= SUPER_USER
)
78 req_proc_e
= m_in
.m_source
;
80 if((r
=vm_getdma(req_proc_e
, &proc
, &base
, &size
)) != OK
)
83 printf("pm:do_getdma: setting reply to 0x%lx@0x%lx proc %d\n",
86 mp
->mp_reply
.m2_i1
= proc
;
87 mp
->mp_reply
.m2_l1
= base
;
88 mp
->mp_reply
.m2_l2
= size
;