mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-10-29 05:38:21 +00:00
kernel: do preparation work for copyless read/write
This commit is contained in:
+8
-2
@@ -99,7 +99,10 @@ static int read(int minor, void *buffer, size_t size, uintmax_t offset, int flag
|
||||
if(size + offset > end)
|
||||
size = end - offset;
|
||||
|
||||
memcpy(buffer, (void *)((uintptr_t)fbs[minor]->address + offset), size);
|
||||
int error = USERCOPY_POSSIBLY_TO_USER(buffer, (void *)((uintptr_t)fbs[minor]->address + offset), size);
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
*readc = size;
|
||||
|
||||
return 0;
|
||||
@@ -118,7 +121,10 @@ static int write(int minor, void *buffer, size_t size, uintmax_t offset, int fla
|
||||
if(size + offset > end)
|
||||
size = end - offset;
|
||||
|
||||
memcpy((void *)((uintptr_t)fbs[minor]->address + offset), buffer, size);
|
||||
int error = USERCOPY_POSSIBLY_FROM_USER((void *)((uintptr_t)fbs[minor]->address + offset), buffer, size);
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
*writec = size;
|
||||
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user