Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/sys_specialfd.c
- This file was added.
/*- | ||||||||||
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD | ||||||||||
* | ||||||||||
* Copyright (c) 2020 Greg V | ||||||||||
* | ||||||||||
* Redistribution and use in source and binary forms, with or without | ||||||||||
* modification, are permitted provided that the following conditions | ||||||||||
* are met: | ||||||||||
* 1. Redistributions of source code must retain the above copyright | ||||||||||
* notice, this list of conditions and the following disclaimer. | ||||||||||
* 2. Redistributions in binary form must reproduce the above copyright | ||||||||||
* notice, this list of conditions and the following disclaimer in the | ||||||||||
* documentation and/or other materials provided with the distribution. | ||||||||||
* | ||||||||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND | ||||||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||||||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||||||||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||||||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||||||||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||||||||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||||||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||||||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||||||||||
* SUCH DAMAGE. | ||||||||||
*/ | ||||||||||
#include <sys/cdefs.h> | ||||||||||
__FBSDID("$FreeBSD$"); | ||||||||||
#include <sys/param.h> | ||||||||||
#include <sys/systm.h> | ||||||||||
#include <sys/kernel.h> | ||||||||||
#include <sys/sysproto.h> | ||||||||||
#include <sys/eventfd.h> | ||||||||||
#include <sys/_specialfd.h> | ||||||||||
int | ||||||||||
sys_specialfd(struct thread *td, struct specialfd_args *args) | ||||||||||
{ | ||||||||||
int error; | ||||||||||
struct specialfd_eventfd args_eventfd; | ||||||||||
switch (args->type) { | ||||||||||
case SPECIALFD_EVENTFD: | ||||||||||
if (args->len != sizeof (struct specialfd_eventfd)) | ||||||||||
brooksUnsubmitted Done Inline Actions
brooks: | ||||||||||
return (EINVAL); | ||||||||||
kibAuthorUnsubmitted Done Inline ActionsRemove all the blank lines inside the case. kib: Remove all the blank lines inside the case. | ||||||||||
error = copyin(args->req, &args_eventfd, sizeof (struct specialfd_eventfd)); | ||||||||||
brooksUnsubmitted Done Inline Actions
brooks: | ||||||||||
if (error != 0) | ||||||||||
return (error); | ||||||||||
if ((args_eventfd.flags & ~(EFD_CLOEXEC|EFD_NONBLOCK|EFD_SEMAPHORE)) != 0) | ||||||||||
kibAuthorUnsubmitted Done Inline Actionsspaces around '|' as any other binary op. kib: spaces around '|' as any other binary op. | ||||||||||
return (EINVAL); | ||||||||||
return (eventfd_create(td, args_eventfd.initval, args_eventfd.flags)); | ||||||||||
default: | ||||||||||
return (EINVAL); | ||||||||||
} | ||||||||||
} |