1 2 /*--------------------------------------------------------------------*/ 3 /*--- Notional "implementation" for m_vkiscnums. ---*/ 4 /*--- m_vkiscnums.c ---*/ 5 /*--------------------------------------------------------------------*/ 6 7 /* 8 This file is part of Valgrind, a dynamic binary instrumentation 9 framework. 10 11 Copyright (C) 2006-2012 OpenWorks LLP 12 info (at) open-works.co.uk 13 14 This program is free software; you can redistribute it and/or 15 modify it under the terms of the GNU General Public License as 16 published by the Free Software Foundation; either version 2 of the 17 License, or (at your option) any later version. 18 19 This program is distributed in the hope that it will be useful, but 20 WITHOUT ANY WARRANTY; without even the implied warranty of 21 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 22 General Public License for more details. 23 24 You should have received a copy of the GNU General Public License 25 along with this program; if not, write to the Free Software 26 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 27 02111-1307, USA. 28 29 The GNU General Public License is contained in the file COPYING. 30 */ 31 32 #include "pub_core_basics.h" 33 #include "pub_core_libcassert.h" 34 #include "pub_core_libcprint.h" 35 36 #include "pub_core_vkiscnums.h" /* self */ 37 38 /* We have pub_{core,tool}_vkiscnums.h. This is the matching implementation 39 for that interface. 40 41 On Linux, the interface exports a bunch of "#define __NR_foo 42" style 42 definitions, so there is no implementation. 43 */ 44 45 //--------------------------------------------------------------------------- 46 #if defined(VGO_linux) 47 //--------------------------------------------------------------------------- 48 49 Char* VG_(sysnum_string)(Word sysnum, SizeT n_buf, Char* buf) 50 { 51 VG_(snprintf)(buf, n_buf, "%3ld", sysnum); 52 return buf; 53 } 54 55 Char* VG_(sysnum_string_extra)(Word sysnum, SizeT n_buf, Char* buf) 56 { 57 return VG_(sysnum_string)(sysnum, n_buf, buf); 58 } 59 60 //--------------------------------------------------------------------------- 61 #elif defined(VGO_darwin) 62 //--------------------------------------------------------------------------- 63 64 Char* VG_(sysnum_string)(Word sysnum, SizeT n_buf, Char* buf) 65 { 66 Char* classname = NULL; 67 switch (VG_DARWIN_SYSNO_CLASS(sysnum)) { 68 case VG_DARWIN_SYSCALL_CLASS_MACH: classname = "mach"; break; 69 case VG_DARWIN_SYSCALL_CLASS_UNIX: classname = "unix"; break; 70 case VG_DARWIN_SYSCALL_CLASS_MDEP: classname = "mdep"; break; 71 case VG_DARWIN_SYSCALL_CLASS_DIAG: classname = "diag"; break; 72 default: classname = "UNKNOWN"; break; 73 } 74 VG_(snprintf)(buf, n_buf, "%s:%3ld", 75 classname, VG_DARWIN_SYSNO_INDEX(sysnum)); 76 return buf; 77 } 78 79 Char* VG_(sysnum_string_extra)(Word sysnum, SizeT n_buf, Char* buf) 80 { 81 return VG_(sysnum_string)(sysnum, n_buf, buf); 82 } 83 84 //--------------------------------------------------------------------------- 85 #else 86 //--------------------------------------------------------------------------- 87 # error Unknown OS 88 #endif 89 90 /*--------------------------------------------------------------------*/ 91 /*--- end ---*/ 92 /*--------------------------------------------------------------------*/ 93