Skip to content

Commit 927128d

Browse files
committed
Cleanup: Nicer app init
1 parent 834263b commit 927128d

File tree

1 file changed

+32
-18
lines changed

1 file changed

+32
-18
lines changed

src/rtapi/uspace_rtapi_main.cc

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -747,32 +747,46 @@ static int harden_rt()
747747
static RtapiApp *makeDllApp(string dllName, int policy){
748748
void *dll = nullptr;
749749
dll = dlopen(dllName.c_str(), RTLD_NOW);
750-
if(!dll) fprintf(stderr, "dlopen: %s\n", dlerror());
750+
if(!dll){
751+
fprintf(stderr, "dlopen: %s\n", dlerror());
752+
return nullptr;
753+
}
751754
auto fn = reinterpret_cast<RtapiApp*(*)(int policy)>(dlsym(dll, "make"));
752-
if(!fn) fprintf(stderr, "dlopen: %s\n", dlerror());
753-
auto result = fn ? fn(policy) : nullptr;
754-
if(result) {
755-
return result;
756-
}else{
757-
throw invalid_argument("Could not load DLL!");
755+
if(!fn){
756+
fprintf(stderr, "dlsym: %s\n", dlerror());
757+
return nullptr;
758758
}
759+
auto result = fn(policy);
760+
if(!result) {
761+
fprintf(stderr, "dlsym: %s\n", dlerror());
762+
return nullptr;
763+
}
764+
return result;
759765
}
760766

761767
static RtapiApp *makeApp()
762768
{
769+
RtapiApp* app;
763770
if(euid != 0 || harden_rt() < 0)
764771
{
765-
return makeDllApp(EMC2_HOME "/lib/libuspace-posix.so.0", SCHED_OTHER);
766-
}
767-
WithRoot r;
768-
if(detect_xenomai_evl()) {
769-
return makeDllApp(EMC2_HOME "/lib/libuspace-xenomai-evl.so.0", SCHED_FIFO);
770-
}else if(detect_xenomai()) {
771-
return makeDllApp(EMC2_HOME "/lib/libuspace-xenomai.so.0", SCHED_FIFO);
772-
} else if(detect_rtai()) {
773-
return makeDllApp(EMC2_HOME "/lib/libuspace-rtai.so.0", SCHED_FIFO);
774-
} else {
775-
return makeDllApp(EMC2_HOME "/lib/libuspace-posix.so.0", SCHED_FIFO);
772+
app=makeDllApp(EMC2_HOME "/lib/libuspace-posix.so.0", SCHED_OTHER);
773+
}else{
774+
WithRoot r;
775+
if(detect_xenomai_evl()) {
776+
app=makeDllApp(EMC2_HOME "/lib/libuspace-xenomai-evl.so.0", SCHED_FIFO);
777+
}else if(detect_xenomai()) {
778+
app=makeDllApp(EMC2_HOME "/lib/libuspace-xenomai.so.0", SCHED_FIFO);
779+
} else if(detect_rtai()) {
780+
app=makeDllApp(EMC2_HOME "/lib/libuspace-rtai.so.0", SCHED_FIFO);
781+
} else {
782+
app=makeDllApp(EMC2_HOME "/lib/libuspace-posix.so.0", SCHED_FIFO);
783+
}
784+
}
785+
786+
if(!app){
787+
throw invalid_argument("Could not load rtapi dll");
788+
}else{
789+
return app;
776790
}
777791
}
778792
RtapiApp &App()

0 commit comments

Comments
 (0)