syscallnames.c revision 294849
1116874Ssmkelly/*- 2116874Ssmkelly * Copyright (c) 2015 John H. Baldwin <jhb@FreeBSD.org> 3116874Ssmkelly * All rights reserved. 4116874Ssmkelly * 5116874Ssmkelly * Redistribution and use in source and binary forms, with or without 6116874Ssmkelly * modification, are permitted provided that the following conditions 7116874Ssmkelly * are met: 8116874Ssmkelly * 1. Redistributions of source code must retain the above copyright 9116874Ssmkelly * notice, this list of conditions and the following disclaimer. 10116874Ssmkelly * 2. Redistributions in binary form must reproduce the above copyright 11116874Ssmkelly * notice, this list of conditions and the following disclaimer in the 12116874Ssmkelly * documentation and/or other materials provided with the distribution. 13116874Ssmkelly * 14116874Ssmkelly * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15116874Ssmkelly * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16116874Ssmkelly * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17116874Ssmkelly * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18116874Ssmkelly * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19116874Ssmkelly * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20116874Ssmkelly * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21116874Ssmkelly * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22116874Ssmkelly * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23116874Ssmkelly * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24116874Ssmkelly * SUCH DAMAGE. 25116874Ssmkelly */ 26116874Ssmkelly 27116874Ssmkelly#include <sys/cdefs.h> 28116874Ssmkelly__FBSDID("$FreeBSD: head/lib/libsysdecode/syscallnames.c 294849 2016-01-26 19:07:09Z jhb $"); 29116874Ssmkelly 30116874Ssmkelly/* 31240336Sobrien * Map system call codes to names for the supported ABIs on each 32180564Sdougb * platform. Rather than regnerating system call name tables locally 33116874Ssmkelly * during the build, use the generated tables in the kernel source 34116874Ssmkelly * tree. 35116874Ssmkelly */ 36116874Ssmkelly 37230099Sdougb#include <sys/param.h> 38116874Ssmkelly#include <stdio.h> 39116874Ssmkelly#include <sysdecode.h> 40116874Ssmkelly 41116874Ssmkellystatic 42116874Ssmkelly#include <kern/syscalls.c> 43 44#if defined(__amd64__) || defined(__powerpc64__) 45static 46#include <compat/freebsd32/freebsd32_syscalls.c> 47#endif 48 49#if defined(__amd64__) || defined(__i386__) 50static 51#ifdef __amd64__ 52#include <amd64/linux/linux_syscalls.c> 53#else 54#include <i386/linux/linux_syscalls.c> 55#endif 56#endif 57 58#ifdef __amd64__ 59static 60#include <amd64/linux32/linux32_syscalls.c> 61#endif 62 63#if defined(__amd64__) || defined(__aarch64__) 64static 65#include <compat/cloudabi64/cloudabi64_syscalls.c> 66#endif 67 68const char * 69sysdecode_syscallname(enum sysdecode_abi abi, unsigned int code) 70{ 71 72 switch (abi) { 73 case FREEBSD: 74 if (code < nitems(syscallnames)) 75 return (syscallnames[code]); 76 break; 77#if defined(__amd64__) || defined(__powerpc64__) 78 case FREEBSD32: 79 if (code < nitems(freebsd32_syscallnames)) 80 return (freebsd32_syscallnames[code]); 81 break; 82#endif 83#if defined(__amd64__) || defined(__i386__) 84 case LINUX: 85 if (code < nitems(linux_syscallnames)) 86 return (linux_syscallnames[code]); 87 break; 88#endif 89#ifdef __amd64__ 90 case LINUX32: 91 if (code < nitems(linux32_syscallnames)) 92 return (linux32_syscallnames[code]); 93 break; 94#endif 95#if defined(__amd64__) || defined(__aarch64__) 96 case CLOUDABI64: 97 if (code < nitems(cloudabi64_syscallnames)) 98 return (cloudabi64_syscallnames[code]); 99 break; 100#endif 101 default: 102 break; 103 } 104 return (NULL); 105} 106