ardix/kernel/fs/write.c
Felix af8210da4a
piss off capitalism
Ardix is being relicensed to GPL v3 or later. I have no idea whether you
can just do this if you feel like it or if it has any consequences, but
i kinda don't really care that much about it.  Any changes made after
this commit will definitely fall under the GPL though, and considering
that only few things are really working yet anyways this is good enough
for me.
2021-02-28 02:18:39 +01:00

50 lines
1.4 KiB
C

/* SPDX-License-Identifier: GPL-3.0-or-later */
/* See the end of this file for copyright, license, and warranty information. */
#include <ardix/malloc.h>
#include <ardix/serial.h>
#include <ardix/syscall.h>
#include <ardix/userspace.h>
#include <errno.h>
#include <stddef.h>
#include <toolchain.h>
ssize_t sys_write(int fd, __user const void *buf, size_t len)
{
ssize_t ret;
void *copy;
if (fd != 1) /* we only support stdout (serial console) right now */
return -EBADF;
copy = malloc(len);
if (copy == NULL)
return -ENOMEM;
ret = (ssize_t)copy_from_user(copy, buf, len);
/* TODO: reschedule if blocking */
ret = serial_write(serial_default_device, copy, (size_t)ret);
free(copy);
return ret;
}
/*
* This file is part of Ardix.
* Copyright (c) 2020, 2021 Felix Kopp <owo@fef.moe>.
*
* Ardix is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Ardix is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/