mirror of
https://gitlab.com/sortix/sortix.git
synced 2023-02-13 20:55:38 -05:00
Fix user-space filesystem copying.
This commit is contained in:
parent
f3eb87c3ee
commit
a6bb538bcf
1 changed files with 4 additions and 4 deletions
|
@ -293,7 +293,7 @@ size_t ChannelDirection::Send(ioctx_t* ctx, const void* ptr, size_t least, size_
|
||||||
available = available_to_end;
|
available = available_to_end;
|
||||||
if ( available < count )
|
if ( available < count )
|
||||||
count = available;
|
count = available;
|
||||||
if ( !ctx->copy_to_dest(buffer + use_offset, src + sofar, count) )
|
if ( !ctx->copy_from_src(buffer + use_offset, src + sofar, count) )
|
||||||
return sofar;
|
return sofar;
|
||||||
if ( !buffer_used )
|
if ( !buffer_used )
|
||||||
kthread_cond_signal(¬_empty);
|
kthread_cond_signal(¬_empty);
|
||||||
|
@ -331,7 +331,7 @@ size_t ChannelDirection::Recv(ioctx_t* ctx, void* ptr, size_t least, size_t max)
|
||||||
available = available_to_end;
|
available = available_to_end;
|
||||||
if ( available < count )
|
if ( available < count )
|
||||||
count = available;
|
count = available;
|
||||||
if ( !ctx->copy_from_src(dst + sofar, buffer + use_offset, count) )
|
if ( !ctx->copy_to_dest(dst + sofar, buffer + use_offset, count) )
|
||||||
return sofar;
|
return sofar;
|
||||||
if ( buffer_used == BUFFER_SIZE )
|
if ( buffer_used == BUFFER_SIZE )
|
||||||
kthread_cond_signal(¬_full);
|
kthread_cond_signal(¬_full);
|
||||||
|
@ -960,7 +960,7 @@ ssize_t Unode::readdirents(ioctx_t* ctx, struct kernel_dirent* dirent,
|
||||||
entry.d_ino = resp.ino;
|
entry.d_ino = resp.ino;
|
||||||
entry.d_type = resp.type;
|
entry.d_type = resp.type;
|
||||||
|
|
||||||
if ( !ctx->copy_from_src(dirent, &entry, sizeof(entry)) )
|
if ( !ctx->copy_to_dest(dirent, &entry, sizeof(entry)) )
|
||||||
goto break_if;
|
goto break_if;
|
||||||
|
|
||||||
size_t needed = sizeof(*dirent) + resp.namelen + 1;
|
size_t needed = sizeof(*dirent) + resp.namelen + 1;
|
||||||
|
@ -969,7 +969,7 @@ ssize_t Unode::readdirents(ioctx_t* ctx, struct kernel_dirent* dirent,
|
||||||
|
|
||||||
uint8_t nul = 0;
|
uint8_t nul = 0;
|
||||||
if ( channel->KernelRecv(ctx, dirent->d_name, resp.namelen) &&
|
if ( channel->KernelRecv(ctx, dirent->d_name, resp.namelen) &&
|
||||||
ctx->copy_from_src(&dirent->d_name[resp.namelen], &nul, 1) )
|
ctx->copy_to_dest(&dirent->d_name[resp.namelen], &nul, 1) )
|
||||||
ret = (ssize_t) needed;
|
ret = (ssize_t) needed;
|
||||||
} break_if:
|
} break_if:
|
||||||
channel->KernelClose();
|
channel->KernelClose();
|
||||||
|
|
Loading…
Add table
Reference in a new issue