blob: 7fb59f65dc519670f45edf78a4c199a7a32992bf [file] [log] [blame]
// Copyright 2023 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SRC_LIB_DRIVER_SYMBOLS_RESTRICTED_SYMBOLS_H_
#define SRC_LIB_DRIVER_SYMBOLS_RESTRICTED_SYMBOLS_H_
#include <set>
namespace driver_symbols {
// ________ _________ ________ ________
// |\ ____\|\___ ___\\ __ \|\ __ \
// \ \ \___|\|___ \ \_\ \ \|\ \ \ \|\ \
// \ \_____ \ \ \ \ \ \ \\\ \ \ ____\
// \|____|\ \ \ \ \ \ \ \\\ \ \ \___|
// ____\_\ \ \ \__\ \ \_______\ \__\
// |\_________\ \|__| \|_______|\|__|
// \|_________|
//
// The relative component URLs for drivers which are allowed to spawn custom threads.
//
// Drivers should avoid spawning their own threads if possible and instead utilize
// driver runtime dispatchers.
//
// See https://fuchsia.dev/fuchsia-src/concepts/drivers/driver-dispatcher-and-threads
// or reach out to the Fuchsia Driver Framework team.
//
// To remove items from the allowlist, please send a change to one of the OWNERS of
// this file to remove an element from the list below.
const std::set<std::string> kCreateThreadSymbolsDriversAllowlist = {
"#meta/acpi-arm64.cm",
"#meta/ahci.cm",
"#meta/aml-g12-pdm-dsp.cm",
"#meta/aml-g12-pdm.cm",
"#meta/aml-g12-tdm-dai.cm",
"#meta/aml-g12-tdm-dsp.cm",
"#meta/aml-g12-tdm.cm",
"#meta/aml_mipicsi.cm",
"#meta/amlogic-display.cm",
"#meta/amlogic_h264_encoder_driver.cm",
"#meta/amlogic_hevc_encoder_driver.cm",
"#meta/amlogic_video_decoder.cm",
"#meta/aml-ram.cm",
"#meta/aml-securemem.cm",
"#meta/aml-thermal-s905d2g-legacy.cm",
"#meta/aml-thermal.cm",
"#meta/ams-light.cm",
"#meta/arm_mali_iv009_isp.cm",
"#meta/asix-88179.cm",
"#meta/asix-88772b.cm",
"#meta/astro.cm",
"#meta/at-fake-transport.cm",
"#meta/block.core.cm",
"#meta/brcmfmac.cm",
"#meta/bt-hci-atheros.cm",
"#meta/bt-hci-broadcom.cm",
"#meta/bt-hci-intel.cm",
"#meta/bt-hci-marvell.cm",
"#meta/bt-hci-virtual.cm",
"#meta/bt-host.cm",
"#meta/bt-transport-uart.cm",
"#meta/bt-transport-usb.cm",
"#meta/bus-pci.cm",
"#meta/chromiumos-ec-core.cm",
"#meta/chromiumos-ec-lpc.cm",
"#meta/compat.cm",
"#meta/cr50-spi-driver.cm",
"#meta/crg-udc.cm",
"#meta/cypress.cm",
"#meta/display-coordinator.cm",
"#meta/dwc2.cm",
"#meta/dwc3.cm",
"#meta/dwmac.cm",
"#meta/e1000.cm",
"#meta/fake-ot-radio.cm",
"#meta/fake-usb-cdc-acm.cm",
"#meta/fidl-async-llcpp-driver.cm",
"#meta/focaltech-sherlock.cm",
"#meta/focaltech.cm",
"#meta/ftdi-fake-usb.cm",
"#meta/ftdi.cm",
"#meta/ftl.cm",
"#meta/fusb302.cm",
"#meta/fvm.cm",
"#meta/gdc.cm",
"#meta/ge2d.cm",
"#meta/goldfish_control.cm",
"#meta/goldfish-display.cm",
"#meta/goldfish_sensor.cm",
"#meta/goldfish.cm",
"#meta/goldfish_sync.cm",
"#meta/goodix.cm",
"#meta/gt6853.cm",
"#meta/gvnic.cm",
"#meta/hdmi-audio-codec.cm",
"#meta/buttons.cm",
"#meta/hidctl.cm",
"#meta/hid-input-report.cm",
"#meta/hid-input-report-v2.cm",
"#meta/hid.cm",
"#meta/i2c-hid.cm",
"#meta/igc.cm",
"#meta/init-test.cm",
"#meta/integration-test.cm",
"#meta/intel-hda.cm",
"#meta/intel-i2c.cm",
"#meta/intel-i915.cm",
"#meta/intel-spi-flash.cm",
"#meta/iwlwifi.cm",
"#meta/msd_arm_dfv2.cm",
"#meta/msd_arm.cm",
"#meta/msd_arm_rebind.cm",
"#meta/msd_arm_rebind_dfv2.cm",
"#meta/msd_arm_test.cm",
"#meta/msd_arm_test_dfv2.cm",
"#meta/libmsd_intel.cm",
"#meta/libmsd_intel_test.cm",
"#meta/libmsd_vsi.cm",
"#meta/libmsd_vsi_test.cm",
"#meta/msd_virtio.cm",
"#meta/machina.cm",
"#meta/max98373.cm",
"#meta/mock-device.cm",
"#meta/motmot.cm",
"#meta/nand.cm",
"#meta/nelson-brownout-protection.cm",
"#meta/nelson-module.cm",
"#meta/network-device.cm",
"#meta/nvme.cm",
"#meta/optee.cm",
"#meta/ot-radio-luis-mfg.cm",
"#meta/ot-radio-luis.cm",
"#meta/ot-radio-nelson-mfg.cm",
"#meta/ot-radio-nelson.cm",
"#meta/ot-radio-sherlock-mfg.cm",
"#meta/ot-radio-sherlock.cm",
"#meta/overnet-usb.cm",
"#meta/pc-ps2.cm",
"#meta/pci_protocol_test_driver.cm",
"#meta/platform-bus-x86.cm",
"#meta/qemu-arm64.cm",
"#meta/qemu-audio-codec.cm",
"#meta/qmi-fake-transport.cm",
"#meta/qmi-transport.cm",
"#meta/ramdisk.cm",
"#meta/ram-nand.cm",
"#meta/realtek-audio-codec.cm",
"#meta/rndis-function.cm",
"#meta/rndis-host.cm",
"#meta/sdhci.cm",
"#meta/sdmmc.cm",
"#meta/selina_radar.cm",
"#meta/sherlock-camera-controller_driver_component.cm",
"#meta/simple.amd-kaveri.cm",
"#meta/simple.bochs.cm",
"#meta/simple.gga.cm",
"#meta/simple.intel.cm",
"#meta/simple.nv.cm",
"#meta/simple.vmware.cm",
"#meta/sysmem.cm",
"#meta/tas27xx.cm",
"#meta/tas5707.cm",
"#meta/tas5720.cm",
"#meta/tas58xx.cm",
"#meta/test-board.cm",
"#meta/test-codec.cm",
"#meta/test-codec2.cm",
"#meta/test-dai.cm",
"#meta/ti-ina231.cm",
"#meta/tpm-driver.cm",
"#meta/tpm-lpc.cm",
"#meta/uart16550.cm",
"#meta/ufs.cm",
"#meta/ums-function.cm",
"#meta/usb-adb-function.cm",
"#meta/usb-audio.cm",
"#meta/usb-bus.cm",
"#meta/usb-cdc-acm.cm",
"#meta/usb-cdc-ecm.cm",
"#meta/usb-cdc-function.cm",
"#meta/usb-hci-test-driver.cm",
"#meta/usb-hid.cm",
"#meta/usb-hub.cm",
"#meta/usb-mass-storage.cm",
"#meta/usb-peripheral.cm",
"#meta/usb-two-endpoint-hid-fake-usb.cm",
"#meta/usb_video.cm",
"#meta/usb-virtual-bus.cm",
"#meta/aml-usb-phy.cm",
"#meta/virtio_block.cm",
"#meta/virtio_console.cm",
"#meta/virtio_gpu.cm",
"#meta/virtio_input.cm",
"#meta/virtio_netdevice.cm",
"#meta/virtio_rng.cm",
"#meta/virtio_scsi.cm",
"#meta/virtio_socket.cm",
"#meta/virtual_audio_driver.cm",
"#meta/virtual-bus-tester.cm",
"#meta/wlanif.cm",
"#meta/wlansoftmac.cm",
"#meta/xhci.cm",
"#meta/zxcrypt.cm",
};
// The set of restricted symbols for creating custom threads which are only allowed for drivers in
// |kCreateThreadSymbolsDriversAllowlist|.
const std::set<std::string> kCreateThreadSymbols = {
"thrd_create",
"thrd_create_with_name",
"pthread_create",
};
const std::set<std::string> kRestrictedLibcSymbols = {
"a64l",
"accept",
"accept4",
"access",
"acct",
"acos",
"acosf",
"acosh",
"acoshf",
"acoshl",
"acosl",
"adjtime",
"alarm",
"alphasort",
"asctime",
"asctime_r",
"asin",
"asinf",
"asinh",
"asinhf",
"asinhl",
"asinl",
"asprintf",
"atan",
"atan2",
"atan2f",
"atan2l",
"atanf",
"atanh",
"atanhf",
"atanhl",
"atanl",
"atexit",
"atof",
"atol",
"atoll",
"at_quick_exit",
"basename",
"bcmp",
"bcopy",
"bind",
"bsd_signal",
"btowc",
"bzero",
"c16rtomb",
"c32rtomb",
"cabs",
"cabsf",
"cabsl",
"cacos",
"cacosf",
"cacosh",
"cacoshf",
"cacoshl",
"cacosl",
"call_once",
"carg",
"cargf",
"cargl",
"casin",
"casinf",
"casinh",
"casinhf",
"casinhl",
"casinl",
"catan",
"catanf",
"catanh",
"catanhf",
"catanhl",
"catanl",
"catclose",
"catgets",
"catopen",
"cbrt",
"cbrtf",
"cbrtl",
"ccos",
"ccosf",
"ccosh",
"ccoshf",
"ccoshl",
"ccosl",
"__c_dot_utf8",
"__c_dot_utf8_locale",
"ceill",
"cexp",
"cexpf",
"cexpl",
"cfgetispeed",
"cfgetospeed",
"cfmakeraw",
"cfsetispeed",
"cfsetospeed",
"cfsetspeed",
"chdir",
"chmod",
"chown",
"chroot",
"cimag",
"cimagf",
"cimagl",
"clearenv",
"clearerr",
"clearerr_unlocked",
"__c_locale",
"clock",
"clock_getcpuclockid",
"clock_getres",
"clock_nanosleep",
"__clock_settime",
"clock_settime",
"clog",
"clogf",
"clogl",
"closelog",
"cnd_timedwait",
"confstr",
"conj",
"conjf",
"conjl",
"connect",
"copysign",
"copysignf",
"copysignl",
"__cos",
"cos",
"__cosdf",
"cosh",
"coshf",
"coshl",
"__cosl",
"cosl",
"cpow",
"cpowf",
"cpowl",
"cproj",
"cprojf",
"cprojl",
"creal",
"crealf",
"creall",
"creat",
"csin",
"csinf",
"csinh",
"csinhf",
"csinhl",
"csinl",
"csqrt",
"csqrtf",
"csqrtl",
"ctan",
"ctanf",
"ctanh",
"ctanhf",
"ctanhl",
"ctanl",
"ctermid",
"ctime",
"ctime_r",
"__cxa_finalize",
"daylight",
"difftime",
"dirname",
"div",
"dl_clone_loader_service",
"_dl_debug_addr",
"dlinfo",
"dlopen",
"__dn_comp",
"dn_comp",
"__dn_expand",
"dn_expand",
"dn_skipname",
"__dns_parse",
"dprintf",
"drand48",
"drem",
"dremf",
"dup",
"dup3",
"__duplocale",
"duplocale",
"eaccess",
"ecvt",
"endgrent",
"endhostent",
"endnetent",
"endprotoent",
"endpwent",
"endservent",
"___environ",
"__environ",
"_environ",
"environ",
"erand48",
"erf",
"erfc",
"erfcf",
"erfcl",
"erff",
"erfl",
"err",
"errx",
"ether_aton",
"ether_aton_r",
"ether_hostton",
"ether_line",
"ether_ntoa",
"ether_ntoa_r",
"ether_ntohost",
"euidaccess",
"eventfd",
"eventfd_read",
"eventfd_write",
"execl",
"execle",
"execlp",
"execv",
"execve",
"execvp",
"__execvpe",
"execvpe",
"_Exit",
"exp",
"exp10",
"exp10f",
"exp10l",
"exp2",
"exp2f",
"exp2l",
"expf",
"expl",
"expm1",
"expm1f",
"expm1l",
"__expo2",
"__expo2f",
"fabs",
"fabsf",
"fabsl",
"faccessat",
"fchmod",
"fchmodat",
"fchown",
"fchownat",
"fcvt",
"fdatasync",
"_fd_get_context",
"fdim",
"fdimf",
"fdiml",
"fdopendir",
"_fd_open_max",
"_fd_release_context",
"feclearexcept",
"fegetenv",
"fegetexceptflag",
"fegetround",
"feholdexcept",
"feof",
"feof_unlocked",
"feraiseexcept",
"ferror",
"ferror_unlocked",
"fesetenv",
"fesetexceptflag",
"fesetround",
"fetestexcept",
"feupdateenv",
"fexecve",
"fflush_unlocked",
"ffsl",
"fgetc",
"fgetc_unlocked",
"fgetgrent",
"fgetln",
"fgetpos",
"fgetpwent",
"fgets",
"fgets_unlocked",
"fgetwc",
"__fgetwc_unlocked",
"fgetwc_unlocked",
"fgetws",
"fgetws_unlocked",
"fileno_unlocked",
"finite",
"finitef",
"__flock",
"flock",
"flockfile",
"floor",
"floorf",
"floorl",
"fma",
"fmaf",
"fmal",
"fmax",
"fmaxf",
"fmaxl",
"fmin",
"fminf",
"fminl",
"fmod",
"fmodf",
"fmodl",
"fnmatch",
"fork",
"fpathconf",
"__fpclassify",
"__fpclassifyf",
"__fpclassifyl",
"fputc_unlocked",
"fputs_unlocked",
"__fputwc_unlocked",
"fputwc_unlocked",
"fputws",
"fputws_unlocked",
"fread_unlocked",
"freeaddrinfo",
"freeifaddrs",
"__freelocale",
"freopen",
"frexp",
"frexpf",
"frexpl",
"fscanf",
"fsetpos",
"fstatat",
"fstatfs",
"fstatvfs",
"fsync",
"ftime",
"ftok",
"ftruncate",
"ftrylockfile",
"funlockfile",
"futimens",
"futimes",
"__futimesat",
"futimesat",
"fwide",
"fwprintf",
"fwrite_unlocked",
"fwscanf",
"gai_strerror",
"gcvt",
"getaddrinfo",
"_getaddrinfo_from_dns",
"getauxval",
"getchar",
"getchar_unlocked",
"getc_unlocked",
"get_current_dir_name",
"getdate",
"getdate_err",
"__getdelim",
"getdelim",
"getdomainname",
"getdtablesize",
"getegid",
"geteuid",
"getgid",
"__getgr_a",
"getgrent",
"__getgrent_a",
"getgrgid",
"getgrgid_r",
"getgrnam",
"getgrnam_r",
"getgrouplist",
"getgroups",
"gethostbyaddr",
"gethostbyaddr_r",
"gethostbyname",
"gethostbyname2",
"gethostbyname2_r",
"gethostbyname_r",
"gethostent",
"gethostid",
"gethostname",
"getifaddrs",
"getitimer",
"getline",
"getlogin",
"getlogin_r",
"getnameinfo",
"getnetbyaddr",
"getnetbyname",
"getnetent",
"getopt",
"getopt_long_only",
"__getopt_msg",
"getpass",
"getpeername",
"getpgid",
"getpgrp",
"getppid",
"getprotobyname",
"getprotobynumber",
"getprotoent",
"__getpw_a",
"getpwent",
"__getpwent_a",
"getpwnam",
"getpwnam_r",
"getpwuid",
"getpwuid_r",
"getresgid",
"__get_resolv_conf",
"getresuid",
"gets",
"getservbyname",
"getservbyname_r",
"getservbyport",
"getservbyport_r",
"getservent",
"getsid",
"getsockname",
"getsockopt",
"getsubopt",
"getuid",
"__get_unsafe_stack_ptr",
"__get_unsafe_stack_start",
"__get_unsafe_stack_top",
"getw",
"getwchar",
"getwchar_unlocked",
"getwc_unlocked",
"gmtime",
"__gmtime_r",
"gmtime_r",
"grantpt",
"__h_errno_location",
"herror",
"hstrerror",
"hypot",
"hypotf",
"hypotl",
"if_freenameindex",
"if_indextoname",
"if_nameindex",
"if_nametoindex",
"ilogb",
"ilogbf",
"ilogbl",
"imaxabs",
"imaxdiv",
"in6addr_any",
"in6addr_loopback",
"index",
"inet_addr",
"__inet_aton",
"inet_aton",
"inet_lnaof",
"inet_makeaddr",
"inet_netof",
"inet_network",
"inet_ntoa",
"inet_ntop",
"inet_pton",
"initgroups",
"initstate",
"__inotify_add_watch",
"inotify_add_watch",
"__inotify_init",
"inotify_init",
"__inotify_init1",
"inotify_init1",
"__inotify_rm_watch",
"inotify_rm_watch",
"__invtrigl_R",
"ioctl",
"_IO_feof_unlocked",
"_IO_ferror_unlocked",
"_IO_getc",
"_IO_getc_unlocked",
"_IO_putc",
"_IO_putc_unlocked",
"isalpha",
"isascii",
"isastream",
"isblank",
"ispunct",
"issetugid",
"iswalnum",
"iswalpha",
"iswblank",
"iswcntrl",
"iswctype",
"iswdigit",
"iswgraph",
"iswprint",
"iswpunct",
"iswspace",
"iswupper",
"iswxdigit",
"j0",
"j0f",
"j1",
"j1f",
"jn",
"jnf",
"jrand48",
"kill",
"killpg",
"labs",
"lchmod",
"lchown",
"lcong48",
"__ldexp_cexp",
"__ldexp_cexpf",
"ldexpf",
"ldexpl",
"ldiv",
"lgamma",
"lgammaf",
"__lgammaf_r",
"lgammaf_r",
"lgammal",
"__lgammal_r",
"lgammal_r",
"__lgamma_r",
"lgamma_r",
"__libc_current_sigrtmax",
"__libc_current_sigrtmin",
"__libc_start_main",
"link",
"linkat",
"listen",
"llabs",
"lldiv",
"llrint",
"llrintf",
"llrintl",
"llround",
"llroundf",
"llroundl",
"localeconv",
"localtime",
"__localtime_r",
"lockf",
"log",
"log10f",
"log10l",
"log1p",
"log1pf",
"log1pl",
"log2f",
"log2l",
"logb",
"logbf",
"logbl",
"logf",
"logl",
"_longjmp",
"longjmp",
"__lookup_ipliteral",
"__lookup_name",
"__lookup_serv",
"lrand48",
"lrint",
"lrintf",
"lrintl",
"lround",
"lroundf",
"lroundl",
"lstat",
"lutimes",
"__madvise",
"madvise",
"mallinfo",
"mallinfo2",
"malloc_disable",
"malloc_disable_memory_tagging",
"malloc_enable",
"malloc_info",
"malloc_iterate",
"malloc_set_add_large_allocation_slack",
"malloc_set_pattern_fill_contents",
"malloc_set_track_allocation_stacks",
"malloc_set_zero_contents",
"malloc_usable_size",
"mallopt",
"__map_file",
"mblen",
"mbrtoc16",
"mbrtoc32",
"mbsinit",
"mbstowcs",
"memalign",
"memccpy",
"__memfd_create",
"memfd_create",
"mempcpy",
"memrchr",
"mkdirat",
"mkdtemp",
"mkfifo",
"mkfifoat",
"mknod",
"mknodat",
"mkostemp",
"__mkostemps",
"mkostemps",
"mkostemps64",
"mkstemp",
"mkstemps",
"mktemp",
"mktime",
"mlock",
"mlockall",
"__mmap",
"_mmap_get_vmo_from_context",
"_mmap_on_mapped",
"modff",
"modfl",
"__mprotect",
"mprotect",
"mrand48",
"msgctl",
"msgget",
"msgrcv",
"msgsnd",
"msync",
"mtx_timedlock",
"munlock",
"munlockall",
"__munmap",
"nan",
"nanf",
"nanl",
"nearbyint",
"nearbyintf",
"nearbyintl",
"__newlocale",
"nextafter",
"nextafterf",
"nextafterl",
"nexttoward",
"nexttowardf",
"nexttowardl",
"__nl_langinfo",
"nl_langinfo",
"__nl_langinfo_l",
"nl_langinfo_l",
"nrand48",
"_ns_flagdata",
"ns_get16",
"ns_get32",
"ns_initparse",
"ns_name_uncompress",
"ns_parserr",
"ns_put16",
"ns_put32",
"ns_skiprr",
"ntohs",
"openat",
"openlog",
"open_memstream",
"openpty",
"open_wmemstream",
"opterr",
"optopt",
"__optpos",
"__optreset",
"optreset",
"__overflow",
"__p1evll",
"pathconf",
"pause",
"pclose",
"pipe",
"pipe2",
"__polevll",
"poll",
"popen",
"posix_close",
"posix_fadvise",
"posix_fallocate",
"__posix_getopt",
"posix_madvise",
"posix_openpt",
"posix_spawn",
"posix_spawnattr_destroy",
"posix_spawnattr_getflags",
"posix_spawnattr_getpgroup",
"posix_spawnattr_getschedparam",
"posix_spawnattr_getschedpolicy",
"posix_spawnattr_getsigdefault",
"posix_spawnattr_getsigmask",
"posix_spawnattr_init",
"posix_spawnattr_setflags",
"posix_spawnattr_setpgroup",
"posix_spawnattr_setschedparam",
"posix_spawnattr_setschedpolicy",
"posix_spawnattr_setsigdefault",
"posix_spawnattr_setsigmask",
"posix_spawn_file_actions_addclose",
"posix_spawn_file_actions_adddup2",
"posix_spawn_file_actions_addopen",
"posix_spawn_file_actions_destroy",
"posix_spawn_file_actions_init",
"posix_spawnp",
"__posix_spawnx",
"pow10",
"pow10f",
"pow10l",
"powl",
"ppoll",
"pread",
"preadv",
"program_invocation_name",
"program_invocation_short_name",
"pselect",
"psiginfo",
"psignal",
"pthread_attr_getdetachstate",
"pthread_attr_getguardsize",
"pthread_attr_getschedparam",
"pthread_attr_getstack",
"pthread_attr_getstacksize",
"pthread_attr_setdetachstate",
"pthread_attr_setguardsize",
"pthread_attr_setschedparam",
"pthread_barrierattr_destroy",
"pthread_barrierattr_init",
"pthread_barrier_destroy",
"pthread_barrier_init",
"pthread_barrier_wait",
"pthread_cancel",
"pthread_condattr_getclock",
"pthread_equal",
"pthread_exit",
"pthread_getaffinity_np",
"pthread_getattr_np",
"pthread_getconcurrency",
"pthread_getcpuclockid",
"pthread_getname_np",
"pthread_kill",
"pthread_mutexattr_getprotocol",
"pthread_mutexattr_getrobust",
"pthread_mutexattr_gettype",
"pthread_mutexattr_setprotocol",
"pthread_mutexattr_setrobust",
"pthread_mutex_consistent",
"pthread_mutex_getprioceiling",
"pthread_mutex_setprioceiling",
"pthread_mutex_timedlock",
"__pthread_mutex_trylock_owner",
"pthread_rwlockattr_destroy",
"pthread_rwlockattr_init",
"pthread_rwlock_destroy",
"pthread_rwlock_init",
"pthread_rwlock_timedwrlock",
"pthread_rwlock_trywrlock",
"pthread_setaffinity_np",
"pthread_setcancelstate",
"pthread_setcanceltype",
"pthread_setconcurrency",
"pthread_sigmask",
"pthread_spin_destroy",
"pthread_spin_init",
"pthread_spin_lock",
"pthread_spin_trylock",
"pthread_spin_unlock",
"pthread_testcancel",
"ptsname",
"__ptsname_r",
"ptsname_r",
"putc",
"putchar_unlocked",
"putc_unlocked",
"putenv",
"putgrent",
"putpwent",
"putw",
"putwc",
"putwchar",
"putwchar_unlocked",
"putwc_unlocked",
"pvalloc",
"pwrite",
"pwritev",
"quick_exit",
"raise",
"rand",
"__randname",
"random",
"readdir_r",
"readlink",
"readlinkat",
"readv",
"recv",
"recvfrom",
"recvmmsg",
"recvmsg",
"regcomp",
"regerror",
"regexec",
"regfree",
"remainder",
"remainderf",
"remainderl",
"__rem_pio2",
"__rem_pio2f",
"__rem_pio2l",
"__rem_pio2_large",
"remquo",
"remquof",
"remquol",
"rename",
"renameat",
"res_init",
"__res_mkquery",
"res_mkquery",
"__res_msend",
"__res_msend_rc",
"__res_query",
"res_query",
"res_querydomain",
"res_search",
"__res_send",
"res_send",
"__res_state",
"rewind",
"rewinddir",
"rindex",
"rint",
"rintf",
"rintl",
"rmdir",
"roundf",
"roundl",
"__rtnetlink_enumerate",
"__sanitizer_before_thread_create_hook",
"__sanitizer_change_code_protection",
"__sanitizer_fast_backtrace",
"__sanitizer_fill_shadow",
"__sanitizer_memory_snapshot",
"__sanitizer_module_loaded",
"__sanitizer_process_exit_hook",
"__sanitizer_shadow_bounds",
"__sanitizer_startup_hook",
"__sanitizer_thread_create_hook",
"__sanitizer_thread_exit_hook",
"__sanitizer_thread_start_hook",
"scalb",
"scalbf",
"scalbln",
"scalblnf",
"scalblnl",
"scalbn",
"scalbnf",
"scalbnl",
"scandir",
"scanf",
"__sched_cpucount",
"sched_getaffinity",
"sched_getcpu",
"sched_getparam",
"sched_get_priority_min",
"sched_getscheduler",
"sched_rr_get_interval",
"sched_setaffinity",
"sched_setparam",
"__scudo_print_stats",
"seed48",
"seekdir",
"select",
"semctl",
"semget",
"sem_getvalue",
"semop",
"semtimedop",
"sem_trywait",
"sem_unlink",
"send",
"sendmmsg",
"sendmsg",
"sendto",
"setbuf",
"setbuffer",
"setdomainname",
"setegid",
"setenv",
"seteuid",
"setgid",
"setgrent",
"setgroups",
"sethostent",
"sethostname",
"setitimer",
"_setjmp",
"setjmp",
"setlinebuf",
"setlocale",
"setlogmask",
"setnetent",
"setpgid",
"setpgrp",
"setprotoent",
"setpwent",
"setregid",
"setresgid",
"setresuid",
"setreuid",
"setservent",
"setsid",
"setsockopt",
"setstate",
"settimeofday",
"setuid",
"setvbuf",
"__shgetc",
"__shlim",
"shmat",
"shmctl",
"shmdt",
"shmget",
"shm_open",
"shm_unlink",
"shutdown",
"sigaction",
"sigaddset",
"sigaltstack",
"sigandset",
"sigdelset",
"sigemptyset",
"sigfillset",
"siginterrupt",
"sigisemptyset",
"sigismember",
"siglongjmp",
"signal",
"__signbit",
"__signbitf",
"__signbitl",
"__signgam",
"signgam",
"significand",
"significandf",
"sigorset",
"sigpause",
"sigpending",
"sigprocmask",
"sigqueue",
"sigsetjmp",
"sigsuspend",
"sigtimedwait",
"sigwait",
"sigwaitinfo",
"__sin",
"sin",
"sincos",
"sincosl",
"__sindf",
"sinh",
"sinhf",
"sinhl",
"__sinl",
"sinl",
"sockatmark",
"socket",
"socketpair",
"sqrt",
"sqrtf",
"sqrtl",
"srand",
"srand48",
"srandom",
"__stack_chk_guard",
"statfs",
"statvfs",
"stime",
"stpcpy",
"stpncpy",
"strcasestr",
"strchrnul",
"strcoll",
"strcspn",
"strfmon",
"strfmon_l",
"__strftime_fmt_1",
"strlcat",
"strncasecmp",
"strncat",
"strndup",
"strpbrk",
"strptime",
"strsignal",
"strspn",
"strtoimax",
"strtok",
"strtok_r",
"strtoumax",
"strverscmp",
"strxfrm",
"stub_pselect",
"stub_select",
"swab",
"swprintf",
"swscanf",
"symlink",
"symlinkat",
"sync",
"syncfs",
"syslog",
"system",
"__sysv_signal",
"__tan",
"tan",
"__tandf",
"tanf",
"tanh",
"tanhf",
"tanhl",
"__tanl",
"tanl",
"tcdrain",
"tcflow",
"tcflush",
"tcgetattr",
"tcgetpgrp",
"tcgetsid",
"tcsendbreak",
"tcsetattr",
"tcsetpgrp",
"telldir",
"tempnam",
"tgamma",
"tgammaf",
"tgammal",
"thrd_equal",
"thrd_set_zx_process",
"thrd_sleep",
"thrd_yield",
"timegm",
"timerfd_create",
"timerfd_gettime",
"timerfd_settime",
"times",
"timezone",
"tmpfile",
"tmpnam",
"__tm_to_tzname",
"toascii",
"towctrans",
"towlower",
"towupper",
"__tre_mem_alloc_impl",
"__tre_mem_destroy",
"__tre_mem_new_impl",
"trunc",
"truncate",
"truncf",
"truncl",
"tss_create",
"tss_delete",
"tss_get",
"tss_set",
"ttyname",
"ttyname_r",
"tzname",
"__tzset",
"tzset",
"ualarm",
"__uflow",
"umask",
"uname",
"unlink",
"unlinkat",
"unlockpt",
"__unsanitized_memcpy",
"__unsanitized_memmove",
"__unsanitized_memset",
"unsetenv",
"__uselocale",
"utime",
"utimensat",
"utimes",
"valloc",
"vdprintf",
"verr",
"verrx",
"versionsort",
"vfscanf",
"vfwprintf",
"vfwscanf",
"vscanf",
"vswprintf",
"vswscanf",
"__vsyslog",
"vsyslog",
"vwarn",
"vwarnx",
"vwprintf",
"vwscanf",
"__wait",
"wait",
"waitid",
"waitpid",
"warn",
"warnx",
"wcpcpy",
"wcpncpy",
"wcscasecmp",
"wcscat",
"wcschr",
"wcscmp",
"wcscoll",
"wcscpy",
"wcscspn",
"wcsdup",
"wcsftime",
"__wcsftime_l",
"wcsftime_l",
"wcsncasecmp",
"wcsncat",
"wcsncmp",
"wcsncpy",
"wcsnlen",
"wcspbrk",
"wcsrchr",
"wcsrtombs",
"wcsspn",
"wcsstr",
"wcstod",
"wcstof",
"wcstoimax",
"wcstok",
"wcstol",
"wcstold",
"wcstoll",
"wcstombs",
"wcstoul",
"wcstoull",
"wcstoumax",
"wcswcs",
"wcswidth",
"wcsxfrm",
"wctob",
"wctomb",
"wctrans",
"wctype",
"wcwidth",
"wmemcmp",
"wmemcpy",
"wmemmove",
"wmemset",
"wordexp",
"wordfree",
"wprintf",
"wscanf",
"__xpg_basename",
"y0",
"y0f",
"y1",
"y1f",
"yn",
"ynf",
"_zx_job_default",
"_zx_process_self",
"zx_take_startup_handle",
"_zx_utc_reference_get",
"zx_utc_reference_get",
"_zx_utc_reference_swap",
"zx_utc_reference_swap",
};
// ________ _________ ________ ________
// |\ ____\|\___ ___\\ __ \|\ __ \
// \ \ \___|\|___ \ \_\ \ \|\ \ \ \|\ \
// \ \_____ \ \ \ \ \ \ \\\ \ \ ____\
// \|____|\ \ \ \ \ \ \ \\\ \ \ \___|
// ____\_\ \ \ \__\ \ \_______\ \__\
// |\_________\ \|__| \|_______|\|__|
// \|_________|
//
// The relative component URLs for drivers which are allowed to invoke fdf_env_* APIs.
//
// To remove items from the allowlist, please send a change to one of the OWNERS of
// this file to remove an element from the list below.
const std::set<std::string> kRestrictedDriverRuntimeSymbolsDriversAllowlist = {
"#meta/network-device.cm",
};
const std::set<std::string> kRestrictedDriverRuntimeSymbols = {
"fdf_env_dispatcher_create_with_owner",
"fdf_env_dispatcher_dump",
"fdf_env_dispatcher_get_dump_deprecated",
"fdf_env_shutdown_dispatchers_async",
"fdf_env_destroy_all_dispatchers",
"fdf_env_register_driver_entry",
"fdf_env_register_driver_exit",
"fdf_env_get_current_driver",
"fdf_env_dispatcher_has_queued_tasks",
"fdf_env_get_thread_limit",
"fdf_env_set_thread_limit",
};
} // namespace driver_symbols
#endif // SRC_LIB_DRIVER_SYMBOLS_RESTRICTED_SYMBOLS_H_