(root)/
glibc-2.38/
mach/
mach_init.c
       1  /* Copyright (C) 1992-2023 Free Software Foundation, Inc.
       2     This file is part of the GNU C Library.
       3  
       4     The GNU C Library is free software; you can redistribute it and/or
       5     modify it under the terms of the GNU Lesser General Public
       6     License as published by the Free Software Foundation; either
       7     version 2.1 of the License, or (at your option) any later version.
       8  
       9     The GNU C Library is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12     Lesser General Public License for more details.
      13  
      14     You should have received a copy of the GNU Lesser General Public
      15     License along with the GNU C Library; if not, see
      16     <https://www.gnu.org/licenses/>.  */
      17  
      18  #include <mach.h>
      19  #include <mach/mig_support.h>
      20  #include <mach/vm_param.h>
      21  #include <unistd.h>
      22  
      23  mach_port_t __mach_task_self_;
      24  mach_port_t __mach_host_self_;
      25  vm_size_t __vm_page_size = 0;	/* Must be data not bss for weak alias.  */
      26  weak_alias (__vm_page_size, vm_page_size)
      27  
      28  #ifdef NDR_DEF_HEADER
      29  /* This defines NDR_record, which the MiG-generated stubs use. XXX namespace */
      30  # include NDR_DEF_HEADER
      31  #endif
      32  
      33  void
      34  __mach_init (void)
      35  {
      36    kern_return_t err;
      37  
      38    __mach_task_self_ = (__mach_task_self) ();
      39    __mach_host_self_ = (__mach_host_self) ();
      40    __mig_init (0);
      41  
      42  #ifdef PAGE_SIZE
      43    __vm_page_size = PAGE_SIZE;
      44    (void) err;
      45  #elif defined (HAVE_HOST_PAGE_SIZE)
      46    if (err = __host_page_size (__mach_host_self (), &__vm_page_size))
      47      _exit (err);
      48  #else
      49    {
      50      vm_statistics_data_t stats;
      51      if (err = __vm_statistics (__mach_task_self (), &stats))
      52        _exit (err);
      53      __vm_page_size = stats.pagesize;
      54    }
      55  #endif
      56  }
      57  weak_alias (__mach_init, mach_init)