Revert "memcpy: aggressive unrolling"

This reverts commit 2da050a4b50713d0f4e3d117f0f216b15da07cb1 - apparently
we're calling memcpy() in a non-safe path.

Revert for now.

Signed-off-by: Avi Kivity <avi@cloudius-systems.com>
console: Fix isatty on a fd that refers to /dev/console

The problem was the flag D_TTY, meaning that device is TTY, not
being passed to device_create.

Signed-off-by: Raphael S. Carvalho <raphaelsc@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
pagecache: unify rmap flush and access scanning classes.

As Avi pointed ptep_flush and ptep_accessed classes can be replaced by
general map-reduce mechanism with customizable map and reduce functions.
The patch implements that.

Signed-off-by: Gleb Natapov <gleb@cloudius-systems.com>
pagecache: make  msync pagecache aware

Current msync implementation is scanning all pages in msync are via
pagetables to find dirty pages, but pagecache already knows what pages are
potentially dirty for given file/offsets, so it is can check if they are
dirty via rmap.

Signed-off-by: Gleb Natapov <gleb@cloudius-systems.com>
mmu: clear pte in unmap() function.

This will allow pagecache code to atomically clear pte and
check for a dirty bit.

Signed-off-by: Gleb Natapov <gleb@cloudius-systems.com>
pagecache: do not write back clean pages during write pages eviction

Not all pages in the write page cache are dirty sync msync() may write
some of them back. Check for that and do not write back clean pages
needlessly.

Signed-off-by: Gleb Natapov <gleb@cloudius-systems.com>
elf: resolve R_X86_64_DPTMOD64 properly

R_X86_64_DPTMOD64 may not be associated with any symbol (which is common
when the linker uses local dynamic TLS mode) in which case it should be
resovled to the index of the current module.

Signed-off-by: Pawel Dziepak <pdziepak@quarnos.org>
Signed-off-by: Avi Kivity <avi@cloudius-systems.com>
Merge branch 'pagecache' of https://github.com/gleb-cloudius/osv

"Nothing spectacular here, just making msync() pagecache aware. Reduces
code size a bit if nothing else"

Signed-off-by: Avi Kivity <avi@cloudius-systems.com>
include/api: Remove dead code

The code in <api/x86/reloc.h> is not used. Avi says it's dead code that
originates fro Musl.

Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
Signed-off-by: Avi Kivity <avi@cloudius-systems.com>
libc: Add fdopendir from musl to fix missing symbol

When using 'zpool.so import' fdopendir symbol is missed.
Code taken from musl libc.

Additional details:
fcntl(fd, F_SETFD, FD_CLOEXEC) call was removed as the close-on-exec
flag is left unchanged on Linux (Glauber Costa).
Also removing struct __DIR_s definition from fs/vfs/main.c, and
referencing the new one added into libc/dirent/dirent.h.

Reviewed-by: Glauber Costa <glommer@cloudius-systems.com>
Signed-off-by: Raphael S. Carvalho <raphaelsc@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
trace: support time slicing options in `trace summary`

The summary will only include samples within the specified range.
Timed samples will be trimmed to the given time range.

Requested-by: Glauber Costa <glommer@cloudius-systems.com>
Signed-off-by: Tomasz Grabiec <tgrabiec@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
fpu: early save/restore in interrupt/exception context

Since we cannot guarantee that the fpu will not be used in interrupts and
exceptions, we must save it earlier rather than later.

This was discovered with an fpu-based memcpy, but can be triggered in other
ways.

Signed-off-by: Avi Kivity <avi@cloudius-systems.com>
elf: allow elf_resolve_pltgot() to use the fpu

elf_resolve_pltgot() can be called from anywhere, including with dirty fpu
state.  Ensure the fpu is not clobbered during its execution.

Signed-off-by: Avi Kivity <avi@cloudius-systems.com>
rwlock: helpers for WITH_LOCK and friends

Implement facades for rwlock so it can be used with WITH_LOCK, specifying
whether we want a read lock or a write lock:

  rwlock my_rwlock;

  WITH_LOCK(my_rwlock.for_read()) {
    read stuff
  }

  WITH_LOCK(my_rwlock.for_write()) {
    write stuff
  }

Signed-off-by: Avi Kivity <avi@cloudius-systems.com>
vitio::net: Fix the description of try_xmit_one_locked(net_req*)

try_xmit_one_locked(net_req*) doesn't return EINVAL anymore. The appropriate
code has moved to xmit_prep().

Signed-off-by: Vlad Zolotarov <vladz@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
syscalls: implement getpeername()

getpeername() is required by iperf in client mode

without it iperf crashes as following:

[/]% run /tools/iperf.so -c 10.0.0.144
Failed looking up symbol getpeername

[backtrace]
0x00000000003326a2 <elf::object::resolve_pltgot(unsigned int)+82>
0x0000000000369b42 <__elf_resolve_pltgot+46>
0x0000100004207535 <Client::Client(thread_Settings*)+301>
0x0000100004208b44 <client_spawn+50>
0x000010000421323a <thread_stop+272>
0x0000000000412ca5 <sync+69>
0x00000000003b2eea <thread_main_c+26>
0x000000000036ae95 <thread_main+7>

Signed-off-by: Dmitry Fleytman <dmitry@daynix.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
virtio::net: implement tx_xmit_iterator using boost::function_output_iterator

Signed-off-by: Vlad Zolotarov <vladz@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
Revert "Revert "memcpy: aggressive unrolling""

This reverts commit f931188409f028290ba090e82e759f06768e40b9.  The fpu
vulnerabilities have been fixed (202b2ccc, d9addd0b9), so fpu-based memcpy
should work now.

Signed-off-by: Avi Kivity <avi@cloudius-systems.com>
release-ec2: always authenticate with AWS credentials

Avoid using X.509 keypair because it became deprecated
and not generally available to person doing release.

Signed-off-by: Dmitry Fleytman <dmitry@daynix.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
libc: Add __h_errno_location

This is needed to run iperf3.

https://github.com/cloudius-systems/osv/issues/305

Signed-off-by: Asias He <asias@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>