mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 23:50:19 +00:00
Kernel: Use Userspace<T> in more syscalls
This commit is contained in:
parent
6c1ba09fbd
commit
8d4d1c7457
Notes:
sideshowbarker
2024-07-19 04:24:41 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/8d4d1c74579
4 changed files with 11 additions and 15 deletions
|
@ -185,11 +185,11 @@ public:
|
|||
int sys$yield();
|
||||
int sys$sync();
|
||||
int sys$beep();
|
||||
int sys$get_process_name(char* buffer, int buffer_size);
|
||||
int sys$set_process_name(const char* user_name, size_t user_name_length);
|
||||
int sys$watch_file(const char* path, size_t path_length);
|
||||
int sys$get_process_name(Userspace<char*> buffer, size_t buffer_size);
|
||||
int sys$set_process_name(Userspace<const char*> user_name, size_t user_name_length);
|
||||
int sys$watch_file(Userspace<const char*> path, size_t path_length);
|
||||
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$gettid();
|
||||
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
|
||||
{
|
||||
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;
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ int Process::sys$dbgputch(u8 ch)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int Process::sys$dbgputstr(const u8* characters, int length)
|
||||
int Process::sys$dbgputstr(Userspace<const u8*> characters, int length)
|
||||
{
|
||||
if (!length)
|
||||
return 0;
|
||||
|
@ -50,7 +50,7 @@ int Process::sys$dbgputstr(const u8* characters, int length)
|
|||
return -EFAULT;
|
||||
SmapDisabler disabler;
|
||||
for (int i = 0; i < length; ++i)
|
||||
IO::out8(0xe9, characters[i]);
|
||||
IO::out8(0xe9, characters.unsafe_userspace_ptr()[i]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -55,23 +55,20 @@ int Process::sys$set_process_icon(int icon_id)
|
|||
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);
|
||||
if (buffer_size <= 0)
|
||||
return -EINVAL;
|
||||
|
||||
if (!validate_write(buffer, buffer_size))
|
||||
return -EFAULT;
|
||||
|
||||
if (m_name.length() + 1 > (size_t)buffer_size)
|
||||
if (m_name.length() + 1 > buffer_size)
|
||||
return -ENAMETOOLONG;
|
||||
|
||||
copy_to_user(buffer, m_name.characters(), m_name.length() + 1);
|
||||
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);
|
||||
if (user_name_length > 256)
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
|
||||
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);
|
||||
auto path = get_syscall_path_argument(user_path, path_length);
|
||||
|
|
Loading…
Reference in a new issue