]> git.saurik.com Git - apple/xnu.git/blobdiff - libsyscall/wrappers/legacy/munmap.c
xnu-6153.81.5.tar.gz
[apple/xnu.git] / libsyscall / wrappers / legacy / munmap.c
index 24b5b5eaa2b79e33ed9fe25d3f8b6da07e7e72c7..30f00d820d748e4a962b9bb1635f923d56329bc6 100644 (file)
@@ -2,14 +2,14 @@
  * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
  *
  * @APPLE_LICENSE_HEADER_START@
- * 
+ *
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  * Version 2.0 (the 'License'). You may not use this file except in
  * compliance with the License. Please obtain a copy of the License at
  * http://www.opensource.apple.com/apsl/ and read it before using this
  * file.
- * 
+ *
  * The Original Code and all software distributed under the License are
  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
@@ -17,7 +17,7 @@
  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
  * Please see the License for the specific language governing rights and
  * limitations under the License.
- * 
+ *
  * @APPLE_LICENSE_HEADER_END@
  */
 
@@ -29,6 +29,8 @@
 #include <sys/types.h>
 #include <sys/mman.h>
 #include <mach/vm_param.h>
+#include <mach/mach_init.h>
+#include "stack_logging_internal.h"
 
 /*
  * Stub function to account for the differences in standard compliance
@@ -41,7 +43,7 @@ extern int __munmap(void *, size_t);
 int
 munmap(void *addr, size_t len)
 {
-       size_t  offset;
+       size_t  offset;
 
        if (len == 0) {
                /*
@@ -59,7 +61,13 @@ munmap(void *addr, size_t len)
        offset = ((uintptr_t) addr) & PAGE_MASK;
        addr = (void *) (((uintptr_t) addr) & ~PAGE_MASK);
        len += offset;
-       return __munmap(addr, len);
-}
 
+       if (__syscall_logger) {
+               __syscall_logger(stack_logging_type_vm_deallocate, (uintptr_t)mach_task_self(), (uintptr_t)addr, len, 0, 0);
+       }
+
+       int result = __munmap(addr, len);
+
+       return result;
+}
 #endif /* NO_SYSCALL_LEGACY */