The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/compat/mach/mach_vm.h

Version: -  FREEBSD  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-2  -  FREEBSD-11-1  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-4  -  FREEBSD-10-3  -  FREEBSD-10-2  -  FREEBSD-10-1  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-3  -  FREEBSD-9-2  -  FREEBSD-9-1  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-4  -  FREEBSD-8-3  -  FREEBSD-8-2  -  FREEBSD-8-1  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-4  -  FREEBSD-7-3  -  FREEBSD-7-2  -  FREEBSD-7-1  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-4  -  FREEBSD-6-3  -  FREEBSD-6-2  -  FREEBSD-6-1  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-5  -  FREEBSD-5-4  -  FREEBSD-5-3  -  FREEBSD-5-2  -  FREEBSD-5-1  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  linux-2.6  -  linux-2.4.22  -  MK83  -  MK84  -  PLAN9  -  DFBSD  -  NETBSD  -  NETBSD5  -  NETBSD4  -  NETBSD3  -  NETBSD20  -  OPENBSD  -  xnu-517  -  xnu-792  -  xnu-792.6.70  -  xnu-1228  -  xnu-1456.1.26  -  xnu-1699.24.8  -  xnu-2050.18.24  -  OPENSOLARIS  -  minix-3-1-1 
SearchContext: -  none  -  3  -  10 

    1 /*      $NetBSD: mach_vm.h,v 1.30 2008/04/28 20:23:45 martin Exp $ */
    2 
    3 /*-
    4  * Copyright (c) 2002-2003 The NetBSD Foundation, Inc.
    5  * All rights reserved.
    6  *
    7  * This code is derived from software contributed to The NetBSD Foundation
    8  * by Emmanuel Dreyfus
    9  *
   10  * Redistribution and use in source and binary forms, with or without
   11  * modification, are permitted provided that the following conditions
   12  * are met:
   13  * 1. Redistributions of source code must retain the above copyright
   14  *    notice, this list of conditions and the following disclaimer.
   15  * 2. Redistributions in binary form must reproduce the above copyright
   16  *    notice, this list of conditions and the following disclaimer in the
   17  *    documentation and/or other materials provided with the distribution.
   18  *
   19  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
   20  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   21  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   22  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
   23  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   29  * POSSIBILITY OF SUCH DAMAGE.
   30  */
   31 
   32 #ifndef _MACH_VM_H_
   33 #define _MACH_VM_H_
   34 
   35 
   36 #include <sys/types.h>
   37 #include <sys/param.h>
   38 
   39 #include <compat/mach/mach_types.h>
   40 #include <compat/mach/mach_message.h>
   41 
   42 #define MACH_ALTERNATE_LOAD_SITE        1
   43 #define MACH_NEW_LOCAL_SHARED_REGIONS   2
   44 #define MACH_QUERY_IS_SYSTEM_REGION     4
   45 #define MACH_SF_PREV_LOADED             1
   46 #define MACH_SYSTEM_REGION_BACKED       2
   47 
   48 #define MACH_VM_PROT_COW        0x8
   49 #define MACH_VM_PROT_ZF         0x10
   50 
   51 typedef struct mach_sf_mapping {
   52         mach_vm_offset_t mapping_offset;
   53         mach_vm_size_t size;
   54         mach_vm_offset_t file_offset;
   55         mach_vm_prot_t protection;
   56         mach_vm_offset_t cksum;
   57 } mach_sf_mapping_t;
   58 
   59 struct mach_vm_region_basic_info {
   60         mach_vm_prot_t protection;
   61         mach_vm_prot_t max_protection;
   62         mach_vm_inherit_t inheritance;
   63         mach_boolean_t shared;
   64         mach_boolean_t reserved;
   65         mach_vm_offset_t offset;
   66         mach_vm_behavior_t behavior;
   67         unsigned short user_wired_count;
   68 };
   69 
   70 /* There is no difference between 32 and 64 bits versions */
   71 struct mach_vm_region_basic_info_64 {
   72         mach_vm_prot_t protection;
   73         mach_vm_prot_t max_protection;
   74         mach_vm_inherit_t inheritance;
   75         mach_boolean_t shared;
   76         mach_boolean_t reserved;
   77         mach_vm_offset_t offset;
   78         mach_vm_behavior_t behavior;
   79         unsigned short user_wired_count;
   80 };
   81 
   82 /* mach_vm_behavior_t values */
   83 #define MACH_VM_BEHAVIOR_DEFAULT 0
   84 #define MACH_VM_BEHAVIOR_RANDOM 1
   85 #define MACH_VM_BEHAVIOR_SEQUENTIAL 2
   86 #define MACH_VM_BEHAVIOR_RSEQNTL 3
   87 #define MACH_VM_BEHAVIOR_WILLNEED 4
   88 #define MACH_VM_BEHAVIOR_DONTNEED 5
   89 
   90 /* vm_map */
   91 #define MACH_VM_INHERIT_SHARE 0
   92 #define MACH_VM_INHERIT_COPY 1
   93 #define MACH_VM_INHERIT_NONE 2
   94 #define MACH_VM_INHERIT_DONATE_COPY 3
   95 typedef struct {
   96         mach_msg_header_t req_msgh;
   97         mach_msg_body_t req_body;
   98         mach_msg_port_descriptor_t req_object;
   99         mach_ndr_record_t req_ndr;
  100         mach_vm_address_t req_address;
  101         mach_vm_size_t req_size;
  102         mach_vm_address_t req_mask;
  103         int req_flags;
  104         mach_vm_offset_t req_offset;
  105         mach_boolean_t req_copy;
  106         mach_vm_prot_t req_cur_protection;
  107         mach_vm_prot_t req_max_protection;
  108         mach_vm_inherit_t req_inherance;
  109 } mach_vm_map_request_t;
  110 
  111 typedef struct {
  112         mach_msg_header_t rep_msgh;
  113         mach_ndr_record_t rep_ndr;
  114         mach_kern_return_t rep_retval;
  115         mach_vm_address_t rep_address;
  116         mach_msg_trailer_t rep_trailer;
  117 } mach_vm_map_reply_t;
  118 
  119 /* vm_allocate */
  120 #define MACH_VM_FLAGS_ANYWHERE 1
  121 typedef struct {
  122         mach_msg_header_t req_msgh;
  123         mach_ndr_record_t req_ndr;
  124         mach_vm_address_t req_address;
  125         mach_vm_size_t req_size;
  126         int req_flags;
  127 } mach_vm_allocate_request_t;
  128 
  129 
  130 typedef struct {
  131         mach_msg_header_t rep_msgh;
  132         mach_ndr_record_t rep_ndr;
  133         mach_kern_return_t rep_retval;
  134         mach_vm_address_t rep_address;
  135         mach_msg_trailer_t rep_trailer;
  136 } mach_vm_allocate_reply_t;
  137 
  138 /* vm_deallocate */
  139 
  140 typedef struct {
  141         mach_msg_header_t req_msgh;
  142         mach_ndr_record_t req_ndr;
  143         mach_vm_address_t req_address;
  144         mach_vm_size_t req_size;
  145 } mach_vm_deallocate_request_t;
  146 
  147 typedef struct {
  148         mach_msg_header_t rep_msgh;
  149         mach_ndr_record_t rep_ndr;
  150         mach_kern_return_t rep_retval;
  151         mach_msg_trailer_t rep_trailer;
  152 } mach_vm_deallocate_reply_t;
  153 
  154 /* vm_wire */
  155 
  156 typedef struct {
  157         mach_msg_header_t req_msgh;
  158         mach_msg_body_t req_body;
  159         mach_msg_port_descriptor_t req_task;
  160         mach_ndr_record_t req_ndr;
  161         mach_vm_address_t req_address;
  162         mach_vm_size_t req_size;
  163         mach_vm_prot_t req_access;
  164 } mach_vm_wire_request_t;
  165 
  166 typedef struct {
  167         mach_msg_header_t rep_msgh;
  168         mach_ndr_record_t rep_ndr;
  169         mach_kern_return_t rep_retval;
  170         mach_msg_trailer_t rep_trailer;
  171 } mach_vm_wire_reply_t;
  172 
  173 /* vm_protect */
  174 
  175 typedef struct {
  176         mach_msg_header_t req_msgh;
  177         mach_ndr_record_t req_ndr;
  178         mach_vm_address_t req_addr;
  179         mach_vm_size_t req_size;
  180         mach_boolean_t req_set_maximum;
  181         mach_vm_prot_t req_prot;
  182 } mach_vm_protect_request_t;
  183 
  184 typedef struct {
  185         mach_msg_header_t rep_msgh;
  186         mach_ndr_record_t rep_ndr;
  187         mach_kern_return_t rep_retval;
  188         mach_msg_trailer_t rep_trailer;
  189 } mach_vm_protect_reply_t;
  190 
  191 /* vm_inherit */
  192 typedef struct {
  193         mach_msg_header_t req_msgh;
  194         mach_ndr_record_t req_ndr;
  195         mach_vm_address_t req_addr;
  196         mach_vm_size_t req_size;
  197         mach_vm_inherit_t req_inh;
  198 } mach_vm_inherit_request_t;
  199 
  200 typedef struct {
  201         mach_msg_header_t rep_msgh;
  202         mach_ndr_record_t rep_ndr;
  203         mach_kern_return_t rep_retval;
  204         mach_msg_trailer_t rep_trailer;
  205 } mach_vm_inherit_reply_t;
  206 
  207 /*
  208  * make_memory_entry_64
  209  */
  210 
  211 typedef struct {
  212         mach_msg_header_t req_msgh;
  213         mach_msg_body_t req_body;
  214         mach_msg_port_descriptor_t req_parent_entry;
  215         mach_ndr_record_t req_ndr;
  216         mach_memory_object_size_t req_size;
  217         mach_memory_object_offset_t req_offset;
  218         mach_vm_prot_t req_perm;
  219 } __packed mach_make_memory_entry_64_request_t;
  220 
  221 typedef struct {
  222         mach_msg_header_t rep_msgh;
  223         mach_msg_body_t rep_body;
  224         mach_msg_port_descriptor_t rep_obj_handle;
  225         mach_ndr_record_t rep_ndr;
  226         mach_memory_object_size_t rep_size;
  227         mach_msg_trailer_t rep_trailer;
  228 } __packed mach_make_memory_entry_64_reply_t;
  229 
  230 /* vm_region */
  231 
  232 #define MACH_VM_REGION_BASIC_INFO 10
  233 typedef struct {
  234         mach_msg_header_t req_msgh;
  235         mach_ndr_record_t req_ndr;
  236         mach_vm_address_t req_addr;
  237         mach_vm_region_flavor_t req_flavor;
  238         mach_msg_type_number_t req_count;
  239 } mach_vm_region_request_t;
  240 
  241 typedef struct {
  242         mach_msg_header_t rep_msgh;
  243         mach_msg_body_t rep_body;
  244         mach_msg_port_descriptor_t rep_obj;
  245         mach_ndr_record_t rep_ndr;
  246         mach_msg_type_number_t rep_addr;
  247         mach_vm_size_t rep_size;
  248         mach_msg_type_number_t rep_count;
  249         int rep_info[9];
  250         mach_msg_trailer_t rep_trailer;
  251 } mach_vm_region_reply_t;
  252 
  253 /* vm_region_64 */
  254 
  255 typedef struct {
  256         mach_msg_header_t req_msgh;
  257         mach_ndr_record_t req_ndr;
  258         mach_vm_address_t req_addr;
  259         mach_vm_region_flavor_t req_flavor;
  260         mach_msg_type_number_t req_count;
  261 } mach_vm_region_64_request_t;
  262 
  263 typedef struct {
  264         mach_msg_header_t rep_msgh;
  265         mach_msg_body_t rep_body;
  266         mach_msg_port_descriptor_t rep_obj;
  267         mach_ndr_record_t rep_ndr;
  268         mach_vm_address_t rep_addr;
  269         mach_vm_size_t rep_size;
  270         mach_msg_type_number_t rep_count;
  271         int rep_info[10];
  272         mach_msg_trailer_t rep_trailer;
  273 } mach_vm_region_64_reply_t;
  274 
  275 /* vm_msync */
  276 #define MACH_VM_SYNC_ASYNCHRONOUS 0x01
  277 #define MACH_VM_SYNC_SYNCHRONOUS 0x02
  278 #define MACH_VM_SYNC_INVALIDATE 0x04
  279 #define MACH_VM_SYNC_KILLPAGES 0x08
  280 #define MACH_VM_SYNC_DEACTIVATE 0x10
  281 typedef struct {
  282         mach_msg_header_t req_msgh;
  283         mach_ndr_record_t req_ndr;
  284         mach_vm_address_t req_addr;
  285         mach_vm_size_t req_size;
  286         mach_vm_sync_t req_flags;
  287 } mach_vm_msync_request_t;
  288 
  289 typedef struct {
  290         mach_msg_header_t rep_msgh;
  291         mach_ndr_record_t rep_ndr;
  292         mach_kern_return_t rep_retval;
  293         mach_msg_trailer_t rep_trailer;
  294 } mach_vm_msync_reply_t;
  295 
  296 /* vm_copy */
  297 typedef struct {
  298         mach_msg_header_t req_msgh;
  299         mach_ndr_record_t req_ndr;
  300         mach_vm_address_t req_src;
  301         mach_vm_size_t req_size;
  302         mach_vm_address_t req_addr;
  303 } mach_vm_copy_request_t;
  304 
  305 typedef struct {
  306         mach_msg_header_t rep_msgh;
  307         mach_ndr_record_t rep_ndr;
  308         mach_kern_return_t rep_retval;
  309         mach_msg_trailer_t rep_trailer;
  310 } mach_vm_copy_reply_t;
  311 
  312 /* vm_read */
  313 
  314 typedef struct {
  315         mach_msg_header_t req_msgh;
  316         mach_ndr_record_t req_ndr;
  317         mach_vm_address_t req_addr;
  318         mach_vm_size_t req_size;
  319 } mach_vm_read_request_t;
  320 
  321 typedef struct {
  322         mach_msg_header_t rep_msgh;
  323         mach_msg_body_t rep_body;
  324         mach_msg_ool_descriptor_t rep_data;
  325         mach_ndr_record_t rep_ndr;
  326         mach_msg_type_number_t rep_count;
  327         mach_msg_trailer_t rep_trailer;
  328 } mach_vm_read_reply_t;
  329 
  330 /* vm_write */
  331 
  332 typedef struct {
  333         mach_msg_header_t req_msgh;
  334         mach_msg_body_t req_body;
  335         mach_msg_ool_descriptor_t req_data;
  336         mach_ndr_record_t req_ndr;
  337         mach_vm_address_t req_addr;
  338         mach_msg_type_number_t req_count;
  339 } mach_vm_write_request_t;
  340 
  341 typedef struct {
  342         mach_msg_header_t rep_msgh;
  343         mach_ndr_record_t rep_ndr;
  344         mach_msg_type_number_t rep_retval;
  345         mach_msg_trailer_t rep_trailer;
  346 } mach_vm_write_reply_t;
  347 
  348 /* vm_machine_attribute */
  349 
  350 #define MACH_MATTR_CACHE                1
  351 #define MACH_MATTR_MIGRATE              2
  352 #define MACH_MATTR_REPLICATE            4
  353 
  354 #define MACH_MATTR_VAL_OFF              0
  355 #define MACH_MATTR_VAL_ON               1
  356 #define MACH_MATTR_VAL_GET              2
  357 #define MACH_MATTR_VAL_CACHE_FLUSH      6
  358 #define MACH_MATTR_VAL_DCACHE_FLUSH     7
  359 #define MACH_MATTR_VAL_ICACHE_FLUSH     8
  360 #define MACH_MATTR_VAL_CACHE_SYNC       9
  361 #define MACH_MATTR_VAL_GET_INFO         10
  362 
  363 typedef struct {
  364         mach_msg_header_t req_msgh;
  365         mach_ndr_record_t req_ndr;
  366         mach_vm_address_t req_addr;
  367         mach_vm_address_t req_size;
  368         mach_vm_machine_attribute_t req_attribute;
  369         mach_vm_machine_attribute_val_t req_value;
  370 } mach_vm_machine_attribute_request_t;
  371 
  372 typedef struct {
  373         mach_msg_header_t rep_msgh;
  374         mach_ndr_record_t rep_ndr;
  375         mach_msg_type_number_t rep_retval;
  376         mach_vm_machine_attribute_val_t rep_value;
  377         mach_msg_trailer_t rep_trailer;
  378 } mach_vm_machine_attribute_reply_t;
  379 
  380 /* Kernel-private structures */
  381 
  382 struct mach_memory_entry {
  383         struct proc *mme_proc;
  384         vaddr_t mme_offset;
  385         size_t mme_size;
  386 };
  387 
  388 /* These are machine dependent functions */
  389 int mach_vm_machine_attribute_machdep(struct lwp *, vaddr_t, size_t, int *);
  390 
  391 #endif /* _MACH_VM_H_ */

Cache object: 94a2712bae3fa04d8f78891fffafe229


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.