mirror of
https://github.com/genodelabs/genode.git
synced 2025-01-26 14:19:19 +00:00
Merge pthread into libc library
The pthread API is considered a standard feature of libc so better to simply merge it with the libc. Pthreads are in fact already a part of the libc in the form of weak symbols. This merger is also a prerequisite for better integrating pthreads with the libc I/O task. Fix #3054
This commit is contained in:
parent
fe322b8e82
commit
7a11384177
@ -104,7 +104,7 @@ install_config $config
|
||||
# generic modules
|
||||
set boot_modules {
|
||||
core ld.lib.so init timer usb_drv
|
||||
libc.lib.so vfs.lib.so libc_pipe.lib.so lwip_legacy.lib.so pthread.lib.so
|
||||
libc.lib.so vfs.lib.so libc_pipe.lib.so lwip_legacy.lib.so
|
||||
tcp_terminal
|
||||
test-terminal_echo
|
||||
vfs_lwip.lib.so
|
||||
|
@ -143,7 +143,7 @@ set boot_modules {
|
||||
core ld.lib.so init timer nic_drv rtc_drv report_rom
|
||||
noux test-terminal_echo
|
||||
|
||||
libc.lib.so pthread.lib.so libm.lib.so vfs.lib.so
|
||||
libc.lib.so libm.lib.so vfs.lib.so
|
||||
vfs_lxip.lib.so lxip.lib.so libc_pipe.lib.so libc_noux.lib.so
|
||||
posix.lib.so libcrypto.lib.so libssh.lib.so zlib.lib.so ncurses.lib.so
|
||||
vfs_jitterentropy.lib.so ssh_terminal
|
||||
|
@ -90,7 +90,7 @@ install_config $config
|
||||
set boot_modules {
|
||||
core ld.lib.so init timer
|
||||
nic_drv
|
||||
libc.lib.so vfs.lib.so pthread.lib.so lwip_legacy.lib.so libc_pipe.lib.so
|
||||
libc.lib.so vfs.lib.so lwip_legacy.lib.so libc_pipe.lib.so
|
||||
tcp_terminal
|
||||
test-terminal_echo
|
||||
vfs_lwip.lib.so
|
||||
|
@ -99,7 +99,6 @@ void Depot_download_manager::gen_fetchurl_start_content(Xml_generator &xml,
|
||||
gen_parent_rom_route(xml, "libcrypto.lib.so");
|
||||
gen_parent_rom_route(xml, "vfs.lib.so");
|
||||
gen_parent_rom_route(xml, "zlib.lib.so");
|
||||
gen_parent_rom_route(xml, "pthread.lib.so");
|
||||
gen_parent_route<Cpu_session> (xml);
|
||||
gen_parent_route<Pd_session> (xml);
|
||||
gen_parent_route<Log_session> (xml);
|
||||
|
@ -78,7 +78,6 @@ void Depot_download_manager::gen_verify_start_content(Xml_generator &xml,
|
||||
gen_parent_unscoped_rom_route(xml, "ld.lib.so");
|
||||
gen_parent_rom_route(xml, "libc.lib.so");
|
||||
gen_parent_rom_route(xml, "libm.lib.so");
|
||||
gen_parent_rom_route(xml, "pthread.lib.so");
|
||||
gen_parent_rom_route(xml, "vfs.lib.so");
|
||||
gen_parent_route<Cpu_session> (xml);
|
||||
gen_parent_route<Pd_session> (xml);
|
||||
|
@ -54,7 +54,6 @@ void Sculpt::gen_update_start_content(Xml_generator &xml)
|
||||
gen_parent_rom_route(xml, "zlib.lib.so");
|
||||
gen_parent_rom_route(xml, "libarchive.lib.so");
|
||||
gen_parent_rom_route(xml, "liblzma.lib.so");
|
||||
gen_parent_rom_route(xml, "pthread.lib.so");
|
||||
gen_parent_rom_route(xml, "config", "depot_download.config");
|
||||
gen_parent_rom_route(xml, "installation", "config -> managed/installation");
|
||||
gen_parent_route<Cpu_session> (xml);
|
||||
|
@ -1,5 +1,5 @@
|
||||
TARGET = ssh_terminal
|
||||
SRC_CC = main.cc
|
||||
LIBS = base libc pthread libssh libc_pipe
|
||||
LIBS = base libc libssh libc_pipe
|
||||
|
||||
CC_CXX_WARN_STRICT =
|
||||
|
@ -1,5 +1,5 @@
|
||||
TARGET = tcp_terminal
|
||||
SRC_CC = main.cc
|
||||
LIBS = libc pthread libc_pipe
|
||||
LIBS = libc libc_pipe
|
||||
|
||||
CC_CXX_WARN_STRICT =
|
||||
|
@ -1,5 +1,5 @@
|
||||
SHARED_LIB = yes
|
||||
LIBS = libc egl i965 pthread
|
||||
LIBS = libc egl i965
|
||||
|
||||
include $(REP_DIR)/lib/mk/mesa-common.inc
|
||||
|
||||
|
@ -90,7 +90,7 @@ CC_OPT += -D__intptr_t_defined
|
||||
|
||||
CC_WARN += -Wno-deprecated-declarations
|
||||
|
||||
LIBS = stdcxx pthread
|
||||
LIBS = stdcxx
|
||||
|
||||
vpath % $(ICU_DIR)/source/common
|
||||
vpath % $(ICU_DIR)/source/i18n
|
||||
|
@ -19,6 +19,12 @@ SRC_CC = atexit.cc dummies.cc rlimit.cc sysctl.cc \
|
||||
socket_operations.cc task.cc socket_fs_plugin.cc syscall.cc \
|
||||
getpwent.cc
|
||||
|
||||
#
|
||||
# Pthreads
|
||||
#
|
||||
SRC_CC += semaphore.cc rwlock.cc \
|
||||
thread.cc thread_create.cc
|
||||
|
||||
CC_OPT_sysctl += -Wno-write-strings
|
||||
|
||||
INC_DIR += $(REP_DIR)/src/lib/libc
|
||||
@ -43,5 +49,3 @@ vpath % $(LIBC_DIR)/lib/libc/string
|
||||
#
|
||||
SHARED_LIB = yes
|
||||
LD_OPT += --version-script=$(REP_DIR)/src/lib/libc/Version.def
|
||||
|
||||
CC_CXX_WARN_STRICT =
|
||||
|
@ -1,5 +1,5 @@
|
||||
LIBUSB_DIR := $(call select_from_ports,libusb)/src/lib/libusb
|
||||
LIBS += libc libc_pipe pthread
|
||||
LIBS += libc libc_pipe
|
||||
|
||||
# find 'config.h'
|
||||
INC_DIR += $(REP_DIR)/src/lib/libusb
|
||||
|
@ -1,5 +1,5 @@
|
||||
SHARED_LIB = yes
|
||||
LIBS = libc stdcxx expat glapi pthread mesa_api
|
||||
LIBS = libc stdcxx expat glapi mesa_api
|
||||
|
||||
include $(REP_DIR)/lib/mk/mesa-common.inc
|
||||
|
||||
|
@ -1,12 +0,0 @@
|
||||
SRC_CC = semaphore.cc rwlock.cc \
|
||||
thread.cc thread_create.cc
|
||||
|
||||
LIBS += libc
|
||||
|
||||
INC_DIR += $(REP_DIR)/src/lib
|
||||
|
||||
vpath % $(REP_DIR)/src/lib/pthread
|
||||
|
||||
SHARED_LIB = yes
|
||||
|
||||
CC_CXX_WARN_STRICT =
|
@ -29,6 +29,6 @@ include $(REP_DIR)/lib/mk/qt5.inc
|
||||
SRC_CC += libc_dummies.cc
|
||||
vpath libc_dummies.cc $(REP_DIR)/src/lib/qt5
|
||||
|
||||
LIBS += zlib pcre16 libc libm libc_pipe pthread
|
||||
LIBS += zlib pcre16 libc libm libc_pipe
|
||||
|
||||
CC_CXX_WARN_STRICT =
|
||||
|
@ -17,6 +17,6 @@ QT_INCPATH += qtwebkit/Source/JavaScriptCore/generated
|
||||
|
||||
include $(REP_DIR)/lib/mk/qt5.inc
|
||||
|
||||
LIBS += qt5_network qt5_core icu pthread libc libm
|
||||
LIBS += qt5_network qt5_core icu libc libm
|
||||
|
||||
CC_CXX_WARN_STRICT =
|
||||
|
@ -82,7 +82,7 @@ SRC_C += cdrom/SDL_cdrom.c \
|
||||
INC_DIR += $(SDL_DIR)/src/cdrom
|
||||
|
||||
# we need libc
|
||||
LIBS = libc pthread mesa_api
|
||||
LIBS = libc mesa_api
|
||||
|
||||
# backend path
|
||||
vpath % $(REP_DIR)/src/lib/sdl
|
||||
|
@ -494,65 +494,71 @@ pread T
|
||||
printf T
|
||||
pselect W
|
||||
psignal T
|
||||
pthread_atfork W
|
||||
pthread_attr_destroy W
|
||||
pthread_attr_getdetachstate W
|
||||
pthread_attr_getguardsize W
|
||||
pthread_attr_getinheritsched W
|
||||
pthread_attr_getschedparam W
|
||||
pthread_attr_getschedpolicy W
|
||||
pthread_attr_getscope W
|
||||
pthread_attr_getstackaddr W
|
||||
pthread_attr_getstacksize W
|
||||
pthread_attr_init W
|
||||
pthread_attr_setdetachstate W
|
||||
pthread_attr_setguardsize W
|
||||
pthread_attr_setinheritsched W
|
||||
pthread_attr_setschedparam W
|
||||
pthread_attr_setschedpolicy W
|
||||
pthread_attr_setscope W
|
||||
pthread_attr_setstackaddr W
|
||||
pthread_attr_setstacksize W
|
||||
pthread_cleanup_pop W
|
||||
pthread_cleanup_push W
|
||||
pthread_cond_broadcast W
|
||||
pthread_cond_destroy W
|
||||
pthread_cond_init W
|
||||
pthread_cond_signal W
|
||||
pthread_cond_timedwait W
|
||||
pthread_cond_wait W
|
||||
pthread_atfork T
|
||||
pthread_attr_destroy T
|
||||
pthread_attr_getdetachstate T
|
||||
pthread_attr_getguardsize T
|
||||
pthread_attr_getinheritsched T
|
||||
pthread_attr_get_np T
|
||||
pthread_attr_getschedparam T
|
||||
pthread_attr_getschedpolicy T
|
||||
pthread_attr_getscope T
|
||||
pthread_attr_getstack T
|
||||
pthread_attr_getstackaddr T
|
||||
pthread_attr_getstacksize T
|
||||
pthread_attr_init T
|
||||
pthread_attr_setdetachstate T
|
||||
pthread_attr_setguardsize T
|
||||
pthread_attr_setinheritsched T
|
||||
pthread_attr_setschedparam T
|
||||
pthread_attr_setschedpolicy T
|
||||
pthread_attr_setscope T
|
||||
pthread_attr_setstackaddr T
|
||||
pthread_attr_setstacksize T
|
||||
pthread_cancel T
|
||||
pthread_cleanup_pop T
|
||||
pthread_cleanup_push T
|
||||
pthread_cond_broadcast T
|
||||
pthread_cond_destroy T
|
||||
pthread_cond_init T
|
||||
pthread_cond_signal T
|
||||
pthread_cond_timedwait T
|
||||
pthread_cond_wait T
|
||||
pthread_condattr_destroy T
|
||||
pthread_condattr_init T
|
||||
pthread_condattr_setclock T
|
||||
pthread_create W
|
||||
pthread_detach W
|
||||
pthread_equal W
|
||||
pthread_exit W
|
||||
pthread_getspecific W
|
||||
pthread_join W
|
||||
pthread_key_create W
|
||||
pthread_key_delete W
|
||||
pthread_kill W
|
||||
pthread_main_np W
|
||||
pthread_mutex_destroy W
|
||||
pthread_mutex_init W
|
||||
pthread_mutex_lock W
|
||||
pthread_mutex_trylock W
|
||||
pthread_mutex_unlock W
|
||||
pthread_mutexattr_destroy W
|
||||
pthread_mutexattr_init W
|
||||
pthread_mutexattr_settype W
|
||||
pthread_once W
|
||||
pthread_rwlock_destroy W
|
||||
pthread_rwlock_init W
|
||||
pthread_rwlock_rdlock W
|
||||
pthread_rwlock_tryrdlock W
|
||||
pthread_rwlock_trywrlock W
|
||||
pthread_rwlock_unlock W
|
||||
pthread_rwlock_wrlock W
|
||||
pthread_self W
|
||||
pthread_setcancelstate W
|
||||
pthread_setcanceltype W
|
||||
pthread_setspecific W
|
||||
pthread_sigmask W
|
||||
pthread_testcancel W
|
||||
pthread_detach T
|
||||
pthread_equal T
|
||||
pthread_exit T
|
||||
pthread_getspecific T
|
||||
pthread_join T
|
||||
pthread_key_create T
|
||||
pthread_key_delete T
|
||||
pthread_kill T
|
||||
pthread_main_np T
|
||||
pthread_mutex_destroy T
|
||||
pthread_mutex_init T
|
||||
pthread_mutex_lock T
|
||||
pthread_mutex_trylock T
|
||||
pthread_mutex_unlock T
|
||||
pthread_mutexattr_destroy T
|
||||
pthread_mutexattr_init T
|
||||
pthread_mutexattr_settype T
|
||||
pthread_once T
|
||||
pthread_rwlock_destroy T
|
||||
pthread_rwlock_init T
|
||||
pthread_rwlock_rdlock T
|
||||
pthread_rwlock_tryrdlock T
|
||||
pthread_rwlock_trywrlock T
|
||||
pthread_rwlock_unlock T
|
||||
pthread_rwlock_wrlock T
|
||||
pthread_self T
|
||||
pthread_setcancelstate T
|
||||
pthread_setcanceltype T
|
||||
pthread_setspecific T
|
||||
pthread_sigmask T
|
||||
pthread_testcancel T
|
||||
ptsname T
|
||||
putc T
|
||||
putc_unlocked T
|
||||
@ -607,9 +613,19 @@ sched_yield W
|
||||
seed48 T
|
||||
seekdir T
|
||||
select W
|
||||
sem_close T
|
||||
semctl T
|
||||
sem_destroy T
|
||||
sem_getvalue T
|
||||
semget W
|
||||
sem_init T
|
||||
sem_open T
|
||||
semop W
|
||||
sem_post T
|
||||
sem_timedwait T
|
||||
sem_trywait T
|
||||
sem_unlink T
|
||||
sem_wait T
|
||||
send T
|
||||
sendto T
|
||||
setbuf T
|
||||
@ -914,7 +930,6 @@ _CurrentRuneLocale D 8
|
||||
__isinff T
|
||||
__isinfl T
|
||||
|
||||
|
||||
#
|
||||
# Public interface between Genode-component code and the libc runtime
|
||||
#
|
||||
@ -928,6 +943,11 @@ _ZN4Libc19Select_handler_baseD1Ev T
|
||||
_ZN4Libc19Select_handler_baseD2Ev T
|
||||
_ZN4Libc10resume_allEv T
|
||||
_ZN4Libc7suspendERNS_15Suspend_functorEm T
|
||||
_Z16pthread_registryv T
|
||||
_ZN16Pthread_registry6insertEP7pthread T
|
||||
_ZN16Pthread_registry6removeEP7pthread T
|
||||
_ZN16Pthread_registry8containsEP7pthread T
|
||||
_ZN4Libc14pthread_createEPP7pthreadPFPvS3_ES3_mPKcPN6Genode11Cpu_sessionENS8_8Affinity8LocationE T
|
||||
|
||||
#
|
||||
# Libc plugin interface
|
||||
|
@ -1 +1 @@
|
||||
5a5de5baab6e3ce23f24012a7604abf070fa990c
|
||||
c9cbd0d0fe35cc19c71295a02d67ecbe09a14573
|
||||
|
@ -1,8 +1,6 @@
|
||||
MIRROR_FROM_REP_DIR := lib/import/import-libc.mk \
|
||||
lib/symbols/libc \
|
||||
lib/symbols/libm \
|
||||
lib/mk/pthread.mk \
|
||||
src/lib/pthread
|
||||
|
||||
content: $(MIRROR_FROM_REP_DIR)
|
||||
|
||||
|
@ -20,7 +20,6 @@
|
||||
<rom label="libpng.lib.so"/>
|
||||
<rom label="mesa.lib.so"/>
|
||||
<rom label="pcre16.lib.so"/>
|
||||
<rom label="pthread.lib.so"/>
|
||||
<rom label="qt5_core.lib.so"/>
|
||||
<rom label="qt5_dejavusans.tar"/>
|
||||
<rom label="qt5_gui.lib.so"/>
|
||||
|
@ -12,7 +12,6 @@
|
||||
<rom label="vfs.lib.so"/>
|
||||
<rom label="libm.lib.so"/>
|
||||
<rom label="libc_pipe.lib.so"/>
|
||||
<rom label="pthread.lib.so"/>
|
||||
<rom label="posix.lib.so"/>
|
||||
<rom label="test-libc_pipe"/>
|
||||
</content>
|
||||
|
@ -12,7 +12,6 @@
|
||||
<rom label="libm.lib.so"/>
|
||||
<rom label="posix.lib.so"/>
|
||||
<rom label="vfs.lib.so"/>
|
||||
<rom label="pthread.lib.so"/>
|
||||
<rom label="test-pthread"/>
|
||||
</content>
|
||||
|
||||
|
@ -113,7 +113,7 @@ install_config $config
|
||||
|
||||
append boot_modules {
|
||||
core init timer } [audio_drv_binary] { avplay
|
||||
ld.lib.so libc.lib.so vfs.lib.so vfs.lib.so vfs.lib.so libm.lib.so pthread.lib.so zlib.lib.so sdl.lib.so
|
||||
ld.lib.so libc.lib.so vfs.lib.so vfs.lib.so vfs.lib.so libm.lib.so zlib.lib.so sdl.lib.so
|
||||
avfilter.lib.so avutil.lib.so avcodec.lib.so avformat.lib.so swscale.lib.so
|
||||
avresample.lib.so
|
||||
mediafile
|
||||
|
@ -110,7 +110,6 @@ set boot_modules {
|
||||
libcrypto.lib.so
|
||||
libssh.lib.so
|
||||
libssl.lib.so
|
||||
pthread.lib.so
|
||||
timer
|
||||
zlib.lib.so
|
||||
report_rom
|
||||
|
@ -68,7 +68,7 @@ install_config $config
|
||||
set boot_modules {
|
||||
core init timer terminal_crosslink
|
||||
test-libc_counter-source test-libc_select
|
||||
ld.lib.so libc.lib.so vfs.lib.so libm.lib.so stdcxx.lib.so pthread.lib.so
|
||||
ld.lib.so libc.lib.so vfs.lib.so libm.lib.so stdcxx.lib.so
|
||||
libc_pipe.lib.so posix.lib.so
|
||||
}
|
||||
|
||||
|
@ -77,7 +77,7 @@ install_config $config
|
||||
set boot_modules {
|
||||
core init timer terminal_crosslink vfs
|
||||
test-libc_counter-source test-libc_select
|
||||
ld.lib.so libc.lib.so vfs.lib.so libm.lib.so stdcxx.lib.so pthread.lib.so
|
||||
ld.lib.so libc.lib.so vfs.lib.so libm.lib.so stdcxx.lib.so
|
||||
libc_pipe.lib.so posix.lib.so
|
||||
}
|
||||
|
||||
|
@ -179,7 +179,7 @@ set boot_modules {
|
||||
core init ld.lib.so timer nitpicker pointer liquid_fb
|
||||
launchpad
|
||||
|
||||
libc.lib.so vfs.lib.so libm.lib.so pthread.lib.so
|
||||
libc.lib.so vfs.lib.so libm.lib.so
|
||||
egl.lib.so mesa.lib.so stdcxx.lib.so
|
||||
expat.lib.so glapi.lib.so
|
||||
|
||||
|
@ -85,7 +85,7 @@ set boot_modules {
|
||||
core init
|
||||
timer
|
||||
test-sdl
|
||||
ld.lib.so libc.lib.so vfs.lib.so libm.lib.so sdl.lib.so pthread.lib.so
|
||||
ld.lib.so libc.lib.so vfs.lib.so libm.lib.so sdl.lib.so
|
||||
}
|
||||
|
||||
# platform-specific modules
|
||||
|
@ -112,7 +112,7 @@ install_config $config
|
||||
set boot_modules {
|
||||
core init timer usb_drv test-smartcard
|
||||
ld.lib.so pcsc-lite.lib.so ccid.lib.so libusb.lib.so
|
||||
libc.lib.so vfs.lib.so libm.lib.so libc_pipe.lib.so pthread.lib.so posix.lib.so
|
||||
libc.lib.so vfs.lib.so libm.lib.so libc_pipe.lib.so posix.lib.so
|
||||
Info.plist
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
TARGET = fetchurl
|
||||
LIBS += curl libc ld pthread
|
||||
LIBS += curl libc ld
|
||||
SRC_CC = component.cc
|
||||
|
@ -91,7 +91,6 @@ DUMMY(void *, 0, ___mtctxres, (void))
|
||||
DUMMY(void *, 0, __nsdefaultsrc, (void))
|
||||
DUMMY(int , -1, _nsdispatch, (void))
|
||||
DUMMY(long , -1, pathconf, (const char *, int))
|
||||
DUMMY(int , -1, pthread_create, (pthread_t *, const pthread_attr_t *, void *(*)(void *), void *))
|
||||
DUMMY(int , -1, rmdir, (const char *))
|
||||
DUMMY(void *, 0, sbrk, (intptr_t))
|
||||
DUMMY(int , -1, sched_setparam, (pid_t, const sched_param *))
|
||||
|
@ -1,10 +0,0 @@
|
||||
+++ src/lib/libc/lib/libc/gen/_pthread_stubs.c
|
||||
@@ -253,7 +253,7 @@
|
||||
STUB_FUNC2(pthread_attr_setschedparam, PJT_ATTR_SETSCHEDPARAM, int, void *, void *)
|
||||
STUB_FUNC2(pthread_attr_setschedpolicy, PJT_ATTR_SETSCHEDPOLICY, int, void *, int)
|
||||
STUB_FUNC2(pthread_attr_setscope, PJT_ATTR_SETSCOPE, int, void *, int)
|
||||
-STUB_FUNC1(pthread_cancel, PJT_CANCEL, int, void *)
|
||||
+/* STUB_FUNC1(pthread_cancel, PJT_CANCEL, int, void *) */
|
||||
STUB_FUNC1(pthread_cleanup_pop, PJT_CLEANUP_POP, int, int)
|
||||
STUB_FUNC2(pthread_cleanup_push, PJT_CLEANUP_PUSH, void, void *, void *)
|
||||
STUB_FUNC3(pthread_cond_timedwait, PJT_COND_TIMEDWAIT, int, void *, void *, void *)
|
@ -22,8 +22,7 @@
|
||||
#include <pthread.h>
|
||||
#include <stdlib.h> /* malloc, free */
|
||||
#include "thread.h"
|
||||
|
||||
#include <libc/task.h> /* libc suspend/resume */
|
||||
#include "task.h"
|
||||
|
||||
using namespace Genode;
|
||||
|
@ -14,11 +14,28 @@
|
||||
* under the terms of the GNU Affero General Public License version 3.
|
||||
*/
|
||||
|
||||
#include <base/thread.h>
|
||||
|
||||
#include <errno.h>
|
||||
#include <pthread.h>
|
||||
#include "thread_create.h"
|
||||
#include "thread.h"
|
||||
#include <errno.h>
|
||||
|
||||
|
||||
int Libc::pthread_create(pthread_t *thread,
|
||||
void *(*start_routine) (void *), void *arg,
|
||||
size_t stack_size, char const * name,
|
||||
Genode::Cpu_session * cpu, Genode::Affinity::Location location)
|
||||
{
|
||||
pthread_t thread_obj = new pthread(start_routine, arg,
|
||||
stack_size, name, cpu, location);
|
||||
if (!thread_obj)
|
||||
return EAGAIN;
|
||||
|
||||
*thread = thread_obj;
|
||||
|
||||
thread_obj->start();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
extern "C"
|
||||
{
|
||||
@ -29,17 +46,8 @@ extern "C"
|
||||
? (*attr)->stack_size
|
||||
: Libc::Component::stack_size();
|
||||
|
||||
pthread_t thread_obj = new pthread(start_routine, arg, stack_size,
|
||||
"pthread", nullptr,
|
||||
Genode::Affinity::Location());
|
||||
|
||||
if (!thread_obj)
|
||||
return EAGAIN;
|
||||
|
||||
*thread = thread_obj;
|
||||
|
||||
thread_obj->start();
|
||||
|
||||
return 0;
|
||||
return Libc::pthread_create(thread, start_routine, arg, stack_size,
|
||||
"pthread", nullptr,
|
||||
Genode::Affinity::Location());
|
||||
}
|
||||
}
|
24
repos/libports/src/lib/libc/thread_create.h
Normal file
24
repos/libports/src/lib/libc/thread_create.h
Normal file
@ -0,0 +1,24 @@
|
||||
/*
|
||||
* \brief Create custom pthreads with native CPU sessions and affinities
|
||||
* \author Emery Hemingway
|
||||
* \date 2018-11-22
|
||||
*
|
||||
* The Libc::pthread_create symbol is exported for the sake of Vbox
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2018 Genode Labs GmbH
|
||||
*
|
||||
* This file is part of the Genode OS framework, which is distributed
|
||||
* under the terms of the GNU Affero General Public License version 3.
|
||||
*/
|
||||
|
||||
#include <pthread.h>
|
||||
#include <base/thread.h>
|
||||
|
||||
namespace Libc {
|
||||
int pthread_create(pthread_t *thread,
|
||||
void *(*start_routine) (void *), void *arg,
|
||||
size_t stack_size, char const * name,
|
||||
Genode::Cpu_session * cpu, Genode::Affinity::Location location);
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
TARGET = test-libc_pipe
|
||||
LIBS = base posix libc_pipe pthread
|
||||
LIBS = base posix libc_pipe
|
||||
SRC_CC = main.cc
|
||||
|
||||
CC_CXX_WARN_STRICT =
|
||||
|
@ -1,5 +1,5 @@
|
||||
TARGET = test-libc_select
|
||||
SRC_CC = main.cc
|
||||
LIBS = posix stdcxx pthread libc_pipe
|
||||
LIBS = posix stdcxx libc_pipe
|
||||
|
||||
CC_CXX_WARN_STRICT =
|
||||
|
@ -1,5 +1,5 @@
|
||||
TARGET = test-pthread
|
||||
SRC_CC = main.cc
|
||||
LIBS = base posix pthread
|
||||
LIBS = base posix
|
||||
|
||||
CC_CXX_WARN_STRICT =
|
||||
|
@ -2,7 +2,7 @@
|
||||
# /build/jdk/openjdk-jdk9-jdk9/build/linux-x86_64-normal-zero-release/hotspot/variant-zero/gensrc/jvmtifiles/jvmtiEnter.cpp
|
||||
# /build/jdk/openjdk-jdk9-jdk9/build/linux-x86_64-normal-zero-release/hotspot/variant-zero/gensrc/jvmtifiles/jvmtiEnterTrace.cpp
|
||||
|
||||
LIBS = stdcxx pthread jzip jimage nio jnet ffi
|
||||
LIBS = stdcxx jzip jimage nio jnet ffi
|
||||
SHARED_LIB = yes
|
||||
HOTSPOT_BASE = $(call select_from_ports,jdk)/src/app/jdk/hotspot/src
|
||||
JDK_GENERATED = $(call select_from_ports,jdk_generated)/src/app/jdk
|
||||
|
@ -11,7 +11,6 @@ LIBS += stdcxx
|
||||
SRC_CC = sup.cc pgm.cc
|
||||
|
||||
INC_DIR += $(call select_from_repositories,src/lib/libc)
|
||||
INC_DIR += $(call select_from_repositories,src/lib/pthread)
|
||||
|
||||
INC_DIR += $(VBOX_DIR)/Main/xml
|
||||
INC_DIR += $(VBOX_DIR)/Main/include
|
||||
|
@ -5,7 +5,6 @@ LIBS += stdcxx
|
||||
SRC_CC = sup.cc pgm.cc
|
||||
|
||||
INC_DIR += $(call select_from_repositories,src/lib/libc)
|
||||
INC_DIR += $(call select_from_repositories,src/lib/pthread)
|
||||
|
||||
INC_DIR += $(VIRTUALBOX_DIR)/VBoxAPIWrap
|
||||
|
||||
|
@ -23,7 +23,6 @@
|
||||
<rom label="libpng.lib.so"/>
|
||||
<rom label="mesa.lib.so"/>
|
||||
<rom label="pcre16.lib.so"/>
|
||||
<rom label="pthread.lib.so"/>
|
||||
<rom label="qt5_core.lib.so"/>
|
||||
<rom label="qt5_dejavusans.tar"/>
|
||||
<rom label="qt5_gui.lib.so"/>
|
||||
|
@ -17,7 +17,6 @@
|
||||
<rom label="libc_pipe.lib.so"/>
|
||||
<rom label="libc_terminal.lib.so"/>
|
||||
<rom label="libm.lib.so"/>
|
||||
<rom label="pthread.lib.so"/>
|
||||
<rom label="libiconv.lib.so"/>
|
||||
<rom label="qemu-usb.lib.so"/>
|
||||
<rom label="stdcxx.lib.so"/>
|
||||
|
@ -52,7 +52,8 @@ MIRROR_FROM_LIBPORTS := lib/mk/libc_pipe.mk \
|
||||
src/lib/libc/libc_mem_alloc.cc \
|
||||
src/lib/libc/libc_mem_alloc.h \
|
||||
src/lib/libc/libc_init.h \
|
||||
src/lib/libc/libc_errno.h \
|
||||
src/lib/libc/thread_create.h \
|
||||
src/lib/libc/thread.h \
|
||||
include/libc-plugin \
|
||||
lib/import/import-qemu-usb_include.mk \
|
||||
lib/mk/qemu-usb_include.mk \
|
||||
|
@ -123,7 +123,7 @@ append boot_modules {
|
||||
ld.lib.so
|
||||
libc.lib.so vfs.lib.so
|
||||
libm.lib.so libpng.lib.so
|
||||
stdcxx.lib.so sdl.lib.so sdl_net.lib.so pthread.lib.so zlib.lib.so
|
||||
stdcxx.lib.so sdl.lib.so sdl_net.lib.so zlib.lib.so
|
||||
dosbox dosbox.tar
|
||||
}
|
||||
|
||||
|
@ -91,7 +91,7 @@ set boot_modules {
|
||||
java.lib.so jvm.lib.so jzip.lib.so jimage.lib.so
|
||||
libc.lib.so libm.lib.so libc_pipe.lib.so
|
||||
zlib.lib.so nio.lib.so jnet.lib.so
|
||||
posix.lib.so pthread.lib.so stdcxx.lib.so ffi.lib.so
|
||||
posix.lib.so stdcxx.lib.so ffi.lib.so
|
||||
vfs.lib.so
|
||||
classes.tar hello.tar
|
||||
}
|
||||
|
@ -217,7 +217,7 @@ set boot_modules {
|
||||
virtualbox5-nova
|
||||
usb_hid.iso
|
||||
vm_genode_usb_hid.vbox
|
||||
ld.lib.so libc.lib.so vfs.lib.so libm.lib.so pthread.lib.so libc_pipe.lib.so
|
||||
ld.lib.so libc.lib.so vfs.lib.so libm.lib.so libc_pipe.lib.so
|
||||
libc_terminal.lib.so libiconv.lib.so stdcxx.lib.so
|
||||
qemu-usb.lib.so
|
||||
}
|
||||
|
@ -47,7 +47,7 @@ exec tar cf [run_dir]/genode/test.tar -C [genode_dir]/repos/ports/src/app/verify
|
||||
|
||||
file copy [genode_dir]/depot/nfeske/pubkey [run_dir]/genode/pubkey
|
||||
|
||||
build_boot_image { verify libc.lib.so vfs.lib.so pthread.lib.so }
|
||||
build_boot_image { verify libc.lib.so vfs.lib.so }
|
||||
|
||||
append qemu_args " -nographic "
|
||||
|
||||
|
@ -310,7 +310,7 @@ lappend_if [expr $use_gui] boot_modules nit_fb
|
||||
lappend_if [expr $use_gui] boot_modules pointer
|
||||
|
||||
append boot_modules {
|
||||
ld.lib.so libc.lib.so vfs.lib.so libm.lib.so pthread.lib.so libc_pipe.lib.so
|
||||
ld.lib.so libc.lib.so vfs.lib.so libm.lib.so libc_pipe.lib.so
|
||||
libc_terminal.lib.so libiconv.lib.so stdcxx.lib.so
|
||||
qemu-usb.lib.so
|
||||
}
|
||||
|
@ -367,7 +367,7 @@ install_config $config
|
||||
append boot_modules {
|
||||
core init timer
|
||||
part_blk ahci_drv fs_rom
|
||||
ld.lib.so libc.lib.so vfs.lib.so libm.lib.so pthread.lib.so
|
||||
ld.lib.so libc.lib.so vfs.lib.so libm.lib.so
|
||||
libc_pipe.lib.so libc_terminal.lib.so
|
||||
libiconv.lib.so stdcxx.lib.so
|
||||
qemu-usb.lib.so
|
||||
|
@ -376,7 +376,6 @@ append boot_modules { virtualbox_nic_router.vbox }
|
||||
append boot_modules { ld.lib.so }
|
||||
append boot_modules { libc.lib.so }
|
||||
append boot_modules { libm.lib.so }
|
||||
append boot_modules { pthread.lib.so }
|
||||
append boot_modules { libc_pipe.lib.so }
|
||||
append boot_modules { libc_terminal.lib.so }
|
||||
append boot_modules { libiconv.lib.so }
|
||||
|
@ -1,6 +1,6 @@
|
||||
TARGET = verify
|
||||
SRC_CC = main.cc
|
||||
LIBS = base libc pthread libgcrypt
|
||||
LIBS = base libc libgcrypt
|
||||
|
||||
GNUPG_SRC_DIR := $(call select_from_ports,gnupg)/src/app/gnupg/g10
|
||||
|
||||
|
@ -25,8 +25,6 @@
|
||||
#include <errno.h>
|
||||
#include <fcntl.h> /* open */
|
||||
|
||||
#include "libc_errno.h"
|
||||
|
||||
/* Genode specific Vbox include */
|
||||
#include "vmm.h"
|
||||
|
||||
@ -248,8 +246,10 @@ extern "C" int _sigprocmask()
|
||||
*/
|
||||
extern "C" int statfs(const char *path, struct statfs *buf)
|
||||
{
|
||||
if (!buf)
|
||||
return Libc::Errno(EFAULT);
|
||||
if (!buf) {
|
||||
errno = EFAULT;
|
||||
return -1;
|
||||
}
|
||||
|
||||
int fd = open(path, 0);
|
||||
|
||||
|
@ -27,12 +27,11 @@ LIBS += virtualbox-bios virtualbox-recompiler virtualbox-runtime \
|
||||
virtualbox-storage virtualbox-zlib virtualbox-liblzf \
|
||||
virtualbox-xml virtualbox-main
|
||||
|
||||
LIBS += pthread libc_terminal libc_pipe libiconv
|
||||
LIBS += libc_terminal libc_pipe libiconv
|
||||
|
||||
LIBS += qemu-usb
|
||||
|
||||
INC_DIR += $(call select_from_repositories,src/lib/libc)
|
||||
INC_DIR += $(call select_from_repositories,src/lib/pthread)
|
||||
|
||||
INC_DIR += $(VBOX_DIR)/Runtime/include
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
#include <cpu_session/connection.h>
|
||||
|
||||
/* Genode libc pthread binding */
|
||||
#include "thread.h"
|
||||
#include <thread_create.h>
|
||||
|
||||
#include "sup.h"
|
||||
#include "vmm.h"
|
||||
@ -98,19 +98,10 @@ static int create_thread(pthread_t *thread, const pthread_attr_t *attr,
|
||||
*/
|
||||
}
|
||||
|
||||
pthread_t thread_obj = new (vmm_heap())
|
||||
pthread(start_routine, arg, stack_size, rtthread->szName,
|
||||
cpu_connection(rtthread->enmType),
|
||||
Genode::Affinity::Location());
|
||||
|
||||
if (!thread_obj)
|
||||
return EAGAIN;
|
||||
|
||||
*thread = thread_obj;
|
||||
|
||||
thread_obj->start();
|
||||
|
||||
return 0;
|
||||
return Libc::pthread_create(thread, start_routine, arg,
|
||||
stack_size, rtthread->szName,
|
||||
cpu_connection(rtthread->enmType),
|
||||
Genode::Affinity::Location());
|
||||
}
|
||||
|
||||
extern "C" int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
|
||||
|
@ -28,12 +28,11 @@ LIBS += virtualbox5-bios virtualbox5-recompiler virtualbox5-runtime \
|
||||
virtualbox5-xml virtualbox5-main virtualbox5-apiwrap \
|
||||
virtualbox5-dis
|
||||
|
||||
LIBS += pthread libc_terminal libc_pipe libiconv
|
||||
LIBS += libc_terminal libc_pipe libiconv
|
||||
|
||||
LIBS += qemu-usb
|
||||
|
||||
INC_DIR += $(call select_from_repositories,src/lib/libc)
|
||||
INC_DIR += $(call select_from_repositories,src/lib/pthread)
|
||||
|
||||
INC_DIR += $(VBOX_DIR)/Runtime/include
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user