FreeBSD/Linux Kernel Cross Reference
sys/norma/ipc_wire.c
1 /*
2 * Mach Operating System
3 * Copyright (c) 1992 Carnegie Mellon University
4 * All Rights Reserved.
5 *
6 * Permission to use, copy, modify and distribute this software and its
7 * documentation is hereby granted, provided that both the copyright
8 * notice and this permission notice appear in all copies of the
9 * software, derivative works or modified versions, and any portions
10 * thereof, and that both notices appear in supporting documentation.
11 *
12 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
13 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
14 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
15 *
16 * Carnegie Mellon requests users of this software to return to
17 *
18 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
19 * School of Computer Science
20 * Carnegie Mellon University
21 * Pittsburgh PA 15213-3890
22 *
23 * any improvements or extensions that they make and grant Carnegie Mellon
24 * the rights to redistribute these changes.
25 */
26 /*
27 * HISTORY
28 * $Log: ipc_wire.c,v $
29 * Revision 2.2 92/03/10 16:28:41 jsb
30 * Merged in norma branch changes as of NORMA_MK7.
31 * [92/03/09 12:50:47 jsb]
32 *
33 * Revision 2.1.2.1 92/01/21 21:53:23 jsb
34 * First checkin. Contents moved here from norma/ipc_output.c.
35 * [92/01/10 20:51:47 jsb]
36 *
37 */
38 /*
39 * File: norma/ipc_wire.c
40 * Author: Joseph S. Barrera III
41 * Date: 1992
42 *
43 * Functions to wire and unwire pages for norma ipc.
44 */
45
46 #include <mach/kern_return.h>
47 #include <mach/port.h>
48 #include <mach/vm_attributes.h>
49 #include <mach/vm_param.h>
50 #include <kern/assert.h>
51 #include <kern/zalloc.h>
52 #include <vm/vm_fault.h>
53 #include <vm/vm_map.h>
54 #include <vm/vm_object.h>
55 #include <vm/vm_page.h>
56 #include <ipc/ipc_port.h>
57
58 /*
59 * For now, we just steal pages.
60 * In the future, we should remember enough information for
61 * norma_ipc_thread_return to either pmap_protect appropriate pages
62 * or block the thread until the pages are released.
63 *
64 * I think we don't need a norma_ipc_copyin_page_list_cont; we should be
65 * able to use vm_map_copyin_page_list_cont.
66 */
67 kern_return_t
68 norma_ipc_copyin_page_list(map, addr, len, src_destroy, copy_result, is_cont)
69 vm_map_t map;
70 vm_offset_t addr;
71 vm_size_t len;
72 boolean_t src_destroy;
73 vm_map_copy_t *copy_result; /* OUT */
74 boolean_t is_cont;
75 {
76 return vm_map_copyin_page_list(map, addr, len, src_destroy, TRUE,
77 copy_result, is_cont);
78 }
79
80 /*
81 * Called when a thread wants to return to user space after possibly having
82 * performed a norma_ipc_copyin_page_list.
83 *
84 * Hooks need to be added somewhere around thread_syscall_return and/or
85 * returns from mach_msg_trap, etc.
86 *
87 * For now, this routine can do nothing (and not be called) because
88 * norma_ipc_copyin_page_list simply steals pages.
89 */
90 norma_ipc_thread_return()
91 {
92 }
Cache object: ed30838bc0662e468bd73e391935a5db
|