mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 23:17:45 +00:00
Kernel: Use Userspace<T> in more syscalls
This commit is contained in:
parent
6c1ba09fbd
commit
8d4d1c7457
4 changed files with 11 additions and 15 deletions
|
@ -185,11 +185,11 @@ public:
|
||||||
int sys$yield();
|
int sys$yield();
|
||||||
int sys$sync();
|
int sys$sync();
|
||||||
int sys$beep();
|
int sys$beep();
|
||||||
int sys$get_process_name(char* buffer, int buffer_size);
|
int sys$get_process_name(Userspace<char*> buffer, size_t buffer_size);
|
||||||
int sys$set_process_name(const char* user_name, size_t user_name_length);
|
int sys$set_process_name(Userspace<const char*> user_name, size_t user_name_length);
|
||||||
int sys$watch_file(const char* path, size_t path_length);
|
int sys$watch_file(Userspace<const char*> path, size_t path_length);
|
||||||
int sys$dbgputch(u8);
|
int sys$dbgputch(u8);
|
||||||
int sys$dbgputstr(const u8*, int length);
|
int sys$dbgputstr(Userspace<const u8*>, int length);
|
||||||
int sys$dump_backtrace();
|
int sys$dump_backtrace();
|
||||||
int sys$gettid();
|
int sys$gettid();
|
||||||
int sys$donate(int tid);
|
int sys$donate(int tid);
|
||||||
|
@ -445,8 +445,7 @@ public:
|
||||||
|
|
||||||
[[nodiscard]] String validate_and_copy_string_from_user(Userspace<const char*> user_characters, size_t size) const
|
[[nodiscard]] String validate_and_copy_string_from_user(Userspace<const char*> user_characters, size_t size) const
|
||||||
{
|
{
|
||||||
return validate_and_copy_string_from_user(user_characters.unsafe_userspace_ptr(), size);
|
return validate_and_copy_string_from_user(user_characters.unsafe_userspace_ptr(), size); }
|
||||||
}
|
|
||||||
|
|
||||||
[[nodiscard]] String validate_and_copy_string_from_user(const Syscall::StringArgument&) const;
|
[[nodiscard]] String validate_and_copy_string_from_user(const Syscall::StringArgument&) const;
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ int Process::sys$dbgputch(u8 ch)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Process::sys$dbgputstr(const u8* characters, int length)
|
int Process::sys$dbgputstr(Userspace<const u8*> characters, int length)
|
||||||
{
|
{
|
||||||
if (!length)
|
if (!length)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -50,7 +50,7 @@ int Process::sys$dbgputstr(const u8* characters, int length)
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
SmapDisabler disabler;
|
SmapDisabler disabler;
|
||||||
for (int i = 0; i < length; ++i)
|
for (int i = 0; i < length; ++i)
|
||||||
IO::out8(0xe9, characters[i]);
|
IO::out8(0xe9, characters.unsafe_userspace_ptr()[i]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -55,23 +55,20 @@ int Process::sys$set_process_icon(int icon_id)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Process::sys$get_process_name(char* buffer, int buffer_size)
|
int Process::sys$get_process_name(Userspace<char*> buffer, size_t buffer_size)
|
||||||
{
|
{
|
||||||
REQUIRE_PROMISE(stdio);
|
REQUIRE_PROMISE(stdio);
|
||||||
if (buffer_size <= 0)
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
if (!validate_write(buffer, buffer_size))
|
if (!validate_write(buffer, buffer_size))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
if (m_name.length() + 1 > (size_t)buffer_size)
|
if (m_name.length() + 1 > buffer_size)
|
||||||
return -ENAMETOOLONG;
|
return -ENAMETOOLONG;
|
||||||
|
|
||||||
copy_to_user(buffer, m_name.characters(), m_name.length() + 1);
|
copy_to_user(buffer, m_name.characters(), m_name.length() + 1);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Process::sys$set_process_name(const char* user_name, size_t user_name_length)
|
int Process::sys$set_process_name(Userspace<const char*> user_name, size_t user_name_length)
|
||||||
{
|
{
|
||||||
REQUIRE_PROMISE(proc);
|
REQUIRE_PROMISE(proc);
|
||||||
if (user_name_length > 256)
|
if (user_name_length > 256)
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
|
|
||||||
namespace Kernel {
|
namespace Kernel {
|
||||||
|
|
||||||
int Process::sys$watch_file(const char* user_path, size_t path_length)
|
int Process::sys$watch_file(Userspace<const char*> user_path, size_t path_length)
|
||||||
{
|
{
|
||||||
REQUIRE_PROMISE(rpath);
|
REQUIRE_PROMISE(rpath);
|
||||||
auto path = get_syscall_path_argument(user_path, path_length);
|
auto path = get_syscall_path_argument(user_path, path_length);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue