(root)/
glibc-2.38/
mach/
errstring.c
       1  /*
       2   * Mach Operating System
       3   * Copyright (c) 1991,1990,1989 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   * (pre-GNU) HISTORY
      28   *
      29   * Revision 2.3  92/04/01  19:38:18  rpd
      30   * 	Updated do_compat for kernel device errors,
      31   * 	bootstrap file-system errors.
      32   * 	[92/03/09            rpd]
      33   *
      34   * Revision 2.2  92/02/20  15:58:08  elf
      35   * 	Created from mach_error.c.
      36   * 	[92/02/11            rpd]
      37   *
      38   */
      39  
      40  #define EXPORT_BOOLEAN
      41  #include <mach/boolean.h>
      42  #include <mach/error.h>
      43  #include <mach_error.h>
      44  #include <errorlib.h>
      45  
      46  extern void __mach_error_map_compat (mach_error_t *);
      47  
      48  const char *
      49  mach_error_type(mach_error_t err)
      50  {
      51  	int sub, system;
      52  
      53  	__mach_error_map_compat( &err );
      54  
      55  	sub = err_get_sub(err);
      56  	system = err_get_system(err);
      57  
      58  	if (system > err_max_system
      59  	||  sub >= errors[system].max_sub ) return( "(?/?)" );
      60  	return( errors[system].subsystem[sub].subsys_name );
      61  }
      62  libc_hidden_def (mach_error_type)
      63  
      64  boolean_t mach_error_full_diag = FALSE;
      65  
      66  const char *
      67  mach_error_string_int(mach_error_t	err,
      68  		      boolean_t		* diag)
      69  {
      70  	int sub, system, code;
      71  
      72  	__mach_error_map_compat( &err );
      73  
      74  	sub = err_get_sub(err);
      75  	system = err_get_system(err);
      76  	code = err_get_code(err);
      77  
      78  	*diag = TRUE;
      79  
      80  	if (system > err_max_system) return( "(?/?) unknown error system" );
      81  	if (sub >= errors[system].max_sub) return( errors[system].bad_sub );
      82  	if (code >= errors[system].subsystem[sub].max_code) return ( NO_SUCH_ERROR );
      83  
      84  	*diag = mach_error_full_diag;
      85  	return( errors[system].subsystem[sub].codes[code] );
      86  }
      87  
      88  const char *
      89  mach_error_string(mach_error_t err)
      90  {
      91  	boolean_t diag;
      92  
      93  	return mach_error_string_int( err, &diag );
      94  
      95  }