2  * Copyright (c) 2007 Apple Inc. All rights reserved. 
   4  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 
   6  * This file contains Original Code and/or Modifications of Original Code 
   7  * as defined in and that are subject to the Apple Public Source License 
   8  * Version 2.0 (the 'License'). You may not use this file except in 
   9  * compliance with the License. The rights granted to you under the License 
  10  * may not be used to create, or enable the creation or redistribution of, 
  11  * unlawful or unlicensed copies of an Apple operating system, or to 
  12  * circumvent, violate, or enable the circumvention or violation of, any 
  13  * terms of an Apple operating system software license agreement. 
  15  * Please obtain a copy of the License at 
  16  * http://www.opensource.apple.com/apsl/ and read it before using this file. 
  18  * The Original Code and all software distributed under the License are 
  19  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  20  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  21  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 
  22  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  23  * Please see the License for the specific language governing rights and 
  24  * limitations under the License. 
  26  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 
  32 #include <kern/kalloc.h> 
  33 #include <kern/zalloc.h> 
  35 #include <sys/param.h> 
  36 #include <sys/queue.h> 
  37 #include <sys/systm.h> 
  40 #include <vm/vm_map.h> 
  42 #include "mac_alloc.h" 
  45  * XXXMAC: We should probably make sure only registered policies can 
  46  * call these, otherwise we're effectively changing Apple's plan wrt 
  47  * exported allocators. 
  54 mac_kalloc(vm_size_t size
, int how
) 
  60                 return kalloc_noblock(size
); 
  64  * for temporary binary compatibility 
  66 void *  mac_kalloc_noblock      (vm_size_t size
); 
  68 mac_kalloc_noblock(vm_size_t size
) 
  70         return kalloc_noblock(size
); 
  74 mac_kfree(void * data
, vm_size_t size
) 
  77         return kfree(data
, size
); 
  85 mac_mbuf_alloc(int len
, int wait
) 
  89         t 
= m_tag_alloc(KERNEL_MODULE_TAG_ID
, KERNEL_TAG_TYPE_MAC_POLICY_LABEL
, 
  94         return ((void *)(t 
+ 1)); 
  98 mac_mbuf_free(void *data
) 
 102         t 
= (struct m_tag 
*)((char *)data 
- sizeof(struct m_tag
)); 
 110 extern vm_map_t kalloc_map
; 
 113 mac_wire(void *start
, void *end
) 
 116         return (vm_map_wire(kalloc_map
, CAST_USER_ADDR_T(start
), 
 117                 CAST_USER_ADDR_T(end
), VM_PROT_READ
|VM_PROT_WRITE
, FALSE
)); 
 121 mac_unwire(void *start
, void *end
) 
 124         return (vm_map_unwire(kalloc_map
, CAST_USER_ADDR_T(start
), 
 125                 CAST_USER_ADDR_T(end
), FALSE
)); 
 132 mac_zinit(vm_size_t size
, vm_size_t maxmem
, vm_size_t alloc
, const char *name
) 
 135         return zinit(size
, maxmem
, alloc
, name
); 
 139 mac_zone_change(zone_t zone
, unsigned int item
, boolean_t value
) 
 142         zone_change(zone
, item
, value
); 
 146 mac_zalloc(zone_t zone
, int how
) 
 152                 return zalloc_noblock(zone
); 
 156 mac_zfree(zone_t zone
, void *elem
)