1*44c5db52SKonstantin Belousov /*- 2*44c5db52SKonstantin Belousov * SPDX-License-Identifier: MIT 3*44c5db52SKonstantin Belousov * 4*44c5db52SKonstantin Belousov * Copyright (c) 2005-2020 Rich Felker, et al. 5*44c5db52SKonstantin Belousov * Copyright (c) 2020 Greg V 6*44c5db52SKonstantin Belousov * 7*44c5db52SKonstantin Belousov * Permission is hereby granted, free of charge, to any person obtaining 8*44c5db52SKonstantin Belousov * a copy of this software and associated documentation files (the 9*44c5db52SKonstantin Belousov * "Software"), to deal in the Software without restriction, including 10*44c5db52SKonstantin Belousov * without limitation the rights to use, copy, modify, merge, publish, 11*44c5db52SKonstantin Belousov * distribute, sublicense, and/or sell copies of the Software, and to 12*44c5db52SKonstantin Belousov * permit persons to whom the Software is furnished to do so, subject to 13*44c5db52SKonstantin Belousov * the following conditions: 14*44c5db52SKonstantin Belousov * 15*44c5db52SKonstantin Belousov * The above copyright notice and this permission notice shall be 16*44c5db52SKonstantin Belousov * included in all copies or substantial portions of the Software. 17*44c5db52SKonstantin Belousov * 18*44c5db52SKonstantin Belousov * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 19*44c5db52SKonstantin Belousov * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20*44c5db52SKonstantin Belousov * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21*44c5db52SKonstantin Belousov * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22*44c5db52SKonstantin Belousov * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23*44c5db52SKonstantin Belousov * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24*44c5db52SKonstantin Belousov * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25*44c5db52SKonstantin Belousov */ 26*44c5db52SKonstantin Belousov 27*44c5db52SKonstantin Belousov #include <sys/cdefs.h> 28*44c5db52SKonstantin Belousov __FBSDID("$FreeBSD$"); 29*44c5db52SKonstantin Belousov 30*44c5db52SKonstantin Belousov #include "namespace.h" 31*44c5db52SKonstantin Belousov #include <sys/eventfd.h> 32*44c5db52SKonstantin Belousov #include <sys/specialfd.h> 33*44c5db52SKonstantin Belousov #include <unistd.h> 34*44c5db52SKonstantin Belousov #include "un-namespace.h" 35*44c5db52SKonstantin Belousov #include "libc_private.h" 36*44c5db52SKonstantin Belousov 37*44c5db52SKonstantin Belousov int eventfd(unsigned int initval, int flags) 38*44c5db52SKonstantin Belousov { 39*44c5db52SKonstantin Belousov struct specialfd_eventfd args; 40*44c5db52SKonstantin Belousov 41*44c5db52SKonstantin Belousov args.initval = initval; 42*44c5db52SKonstantin Belousov args.flags = flags; 43*44c5db52SKonstantin Belousov return (__sys___specialfd(SPECIALFD_EVENTFD, &args, sizeof(args))); 44*44c5db52SKonstantin Belousov } 45*44c5db52SKonstantin Belousov 46*44c5db52SKonstantin Belousov int eventfd_read(int fd, eventfd_t *value) 47*44c5db52SKonstantin Belousov { 48*44c5db52SKonstantin Belousov return (sizeof(*value) == _read(fd, value, sizeof(*value)) ? 0 : -1); 49*44c5db52SKonstantin Belousov } 50*44c5db52SKonstantin Belousov 51*44c5db52SKonstantin Belousov int eventfd_write(int fd, eventfd_t value) 52*44c5db52SKonstantin Belousov { 53*44c5db52SKonstantin Belousov return (sizeof(value) == _write(fd, &value, sizeof(value)) ? 0 : -1); 54*44c5db52SKonstantin Belousov } 55