[PATCH] java: move java_api and jni_helpers to java modules

3 views
Skip to first unread message

Waldemar Kozaczuk

unread,
Jan 15, 2020, 11:21:19 PM1/15/20
to osv...@googlegroups.com, Waldemar Kozaczuk
The java_api.* and jni_helpers.* are actually only used by
java.cc and following httpserver java-related plugins:
- httpserver-jolokia-plugin
- httpserver-jvm-plugin
- josvsym

This patch moves the relevant code out from kernel
and makes it part of java.so.

Signed-off-by: Waldemar Kozaczuk <jwkoz...@gmail.com>
---
Makefile | 2 --
modules/httpserver-api/Makefile | 2 +-
modules/httpserver-api/module.py | 1 +
modules/httpserver-jolokia-plugin/jolokia.cc | 2 +-
modules/httpserver-jvm-plugin/jvm.cc | 2 +-
modules/java-base/Makefile | 3 ++-
modules/java-base/common.gmk | 4 ++--
modules/java-base/java.cc | 4 ++--
{java => modules/java-base}/jvm/java_api.cc | 0
{java => modules/java-base}/jvm/java_api.hh | 0
{java => modules/java-base}/jvm/jni_helpers.cc | 0
{java => modules/java-base}/jvm/jni_helpers.hh | 0
modules/java-isolated/Makefile | 11 +++++++----
modules/java-non-isolated/Makefile | 11 +++++++----
modules/java-tests/Makefile | 3 +++
modules/josvsym/josvsym.cc | 2 +-
16 files changed, 28 insertions(+), 19 deletions(-)
rename {java => modules/java-base}/jvm/java_api.cc (100%)
rename {java => modules/java-base}/jvm/java_api.hh (100%)
rename {java => modules/java-base}/jvm/jni_helpers.cc (100%)
rename {java => modules/java-base}/jvm/jni_helpers.hh (100%)

diff --git a/Makefile b/Makefile
index 62277d5f..51f76cd6 100644
--- a/Makefile
+++ b/Makefile
@@ -817,8 +817,6 @@ drivers += drivers/clock-common.o
drivers += drivers/clockevent.o
drivers += core/elf.o
drivers += java/jvm/jvm_balloon.o
-drivers += java/jvm/java_api.o
-drivers += java/jvm/jni_helpers.o
drivers += drivers/random.o
drivers += drivers/zfs.o
drivers += drivers/null.o
diff --git a/modules/httpserver-api/Makefile b/modules/httpserver-api/Makefile
index 943fe705..525fafbf 100644
--- a/modules/httpserver-api/Makefile
+++ b/modules/httpserver-api/Makefile
@@ -107,7 +107,7 @@ check-http:
check-ssl:
# Test SSL
cd $(src) && \
- make image=httpserver-api.fg_ssl,certs,openjdk8-zulu-full,jetty && \
+ make image=httpserver-api.daemon_ssl,certs,openjdk8-zulu-full,jetty && \
PYTHONPATH=$(src)/scripts modules/httpserver-api/tests/testhttpserver-api.py \
--cert modules/certs/build/client.pem \
--key modules/certs/build/client.key \
diff --git a/modules/httpserver-api/module.py b/modules/httpserver-api/module.py
index e1da7447..cdedf5a3 100644
--- a/modules/httpserver-api/module.py
+++ b/modules/httpserver-api/module.py
@@ -22,6 +22,7 @@ api.require_if_other_module_present('httpserver-jvm-plugin','java')
# httpserver will run regardless of an explicit command line
# passed with "run.py -e".
daemon = api.run_on_init(_exe + ' &!')
+daemon_ssl = api.run_on_init(_exe + ' --ssl &!')

fg = api.run(_exe)

diff --git a/modules/httpserver-jolokia-plugin/jolokia.cc b/modules/httpserver-jolokia-plugin/jolokia.cc
index 30e3a7cb..75b451e9 100644
--- a/modules/httpserver-jolokia-plugin/jolokia.cc
+++ b/modules/httpserver-jolokia-plugin/jolokia.cc
@@ -15,7 +15,7 @@
#include <mutex>
#include <memory>
#include <regex>
-#include <java/jvm/jni_helpers.hh>
+#include "../java-base/jvm/jni_helpers.hh"
#include "exception.hh"

using namespace httpserver::json;
diff --git a/modules/httpserver-jvm-plugin/jvm.cc b/modules/httpserver-jvm-plugin/jvm.cc
index 68c3760e..b27481ce 100644
--- a/modules/httpserver-jvm-plugin/jvm.cc
+++ b/modules/httpserver-jvm-plugin/jvm.cc
@@ -7,7 +7,7 @@

#include "jvm.hh"
#include "autogen/jvm.json.hh"
-#include "jvm/java_api.hh"
+#include "../java-base/jvm/java_api.hh"
#include <string>

namespace httpserver {
diff --git a/modules/java-base/Makefile b/modules/java-base/Makefile
index 13c1858c..d61999cf 100644
--- a/modules/java-base/Makefile
+++ b/modules/java-base/Makefile
@@ -3,7 +3,7 @@ include common.gmk
ifeq ($(arch),aarch64)
java-targets :=
else
-java-targets := obj/jni/monitor.so
+java-targets := obj/jni/monitor.so obj/jvm/jni_helpers.o obj/jvm/java_api.o
endif

module: all
@@ -13,6 +13,7 @@ all: $(init) $(java-targets)
init:
@echo " MKDIRS"
$(call very-quiet, mkdir -p obj/jni)
+ $(call very-quiet, mkdir -p obj/jvm)
.PHONY: init

clean:
diff --git a/modules/java-base/common.gmk b/modules/java-base/common.gmk
index e54a301a..0e2e4690 100644
--- a/modules/java-base/common.gmk
+++ b/modules/java-base/common.gmk
@@ -1,7 +1,5 @@
-
INCLUDES = -I$(src)/arch/$(arch) -I$(src) -I$(src)/include -I$(src)/arch/common
INCLUDES += -I$(src)/include/glibc-compat
-INCLUDES += -isystem $(src)/external/$(arch)/acpica/source/include
INCLUDES += $(shell $(CXX) -E -xc++ - -v </dev/null 2>&1 | awk '/^End/ {exit} /^ .*c\+\+/ {print "-isystem" $$0}')
INCLUDES += -isystem $(src)/include/api
INCLUDES += -isystem $(src)/include/api/$(arch)
@@ -13,7 +11,9 @@ autodepend = -MD -MT $@ -MP
COMMON_FLAGS = -g -Wall -fPIC $(INCLUDES) -O2 $(autodepend) -DCONF_debug_memory=0 -D_KERNEL
CXXFLAGS = -std=c++11 $(COMMON_FLAGS)
CFLAGS = -std=gnu99 $(COMMON_FLAGS)
+
src = $(shell readlink -f ../..)
+java-base-path := $(src)/modules/java-base

RM := /bin/rm

diff --git a/modules/java-base/java.cc b/modules/java-base/java.cc
index 74e0d860..796f6e44 100644
--- a/modules/java-base/java.cc
+++ b/modules/java-base/java.cc
@@ -14,9 +14,9 @@
#include <osv/debug.hh>
#include <java/jvm/jvm_balloon.hh>
#include <osv/mempool.hh>
-#include <java/jvm/java_api.hh>
+#include "jvm/java_api.hh"
#include "osv/version.hh"
-#include <java/jvm/jni_helpers.hh>
+#include "jvm/jni_helpers.hh"
#include <osv/defer.hh>
#include <osv/app.hh>

diff --git a/java/jvm/java_api.cc b/modules/java-base/jvm/java_api.cc
similarity index 100%
rename from java/jvm/java_api.cc
rename to modules/java-base/jvm/java_api.cc
diff --git a/java/jvm/java_api.hh b/modules/java-base/jvm/java_api.hh
similarity index 100%
rename from java/jvm/java_api.hh
rename to modules/java-base/jvm/java_api.hh
diff --git a/java/jvm/jni_helpers.cc b/modules/java-base/jvm/jni_helpers.cc
similarity index 100%
rename from java/jvm/jni_helpers.cc
rename to modules/java-base/jvm/jni_helpers.cc
diff --git a/java/jvm/jni_helpers.hh b/modules/java-base/jvm/jni_helpers.hh
similarity index 100%
rename from java/jvm/jni_helpers.hh
rename to modules/java-base/jvm/jni_helpers.hh
diff --git a/modules/java-isolated/Makefile b/modules/java-isolated/Makefile
index 549aed5f..e0e15a01 100644
--- a/modules/java-isolated/Makefile
+++ b/modules/java-isolated/Makefile
@@ -8,17 +8,20 @@ else
java-targets := obj/java.so
endif

-obj/java.o: $(SRC)/modules/java-base/java.cc | init
- $(call quiet, $(CXX) $(CXXFLAGS) -o $@ -c $(SRC)/modules/java-base/java.cc -MMD, CXX $@)
+obj/java.o: $(java-base-path)/java.cc | init
+ $(call quiet, $(CXX) $(CXXFLAGS) -o $@ -c $(java-base-path)/java.cc -MMD, CXX $@)
+
+obj/java.so: obj/java.o $(java-base-path)/obj/jvm/java_api.o $(java-base-path)/obj/jvm/jni_helpers.o
+ $(call quiet, $(CXX) $(CXXFLAGS) -shared -o $@ $^, LINK $@)

init:
@echo " MKDIRS"
$(call very-quiet, mkdir -p obj)

module: $(java-targets)
- cd $(SRC)/modules/java-base && mvn -q --projects :runjava-common,:runjava-isolated package -DskipTests=true
+ cd $(java-base-path) && mvn -q --projects :runjava-common,:runjava-isolated package -DskipTests=true

clean:
- cd $(SRC)/modules/java-base && mvn -q clean
+ cd $(java-base-path) && mvn -q clean
-rm -f dependency-reduced-pom.xml
$(call very-quiet, $(RM) -rf obj)
diff --git a/modules/java-non-isolated/Makefile b/modules/java-non-isolated/Makefile
index bf87f6d7..19e4a48f 100644
--- a/modules/java-non-isolated/Makefile
+++ b/modules/java-non-isolated/Makefile
@@ -8,17 +8,20 @@ else
java-targets := obj/java_non_isolated.so
endif

-obj/java_non_isolated.o: $(SRC)/modules/java-base/java.cc | init
- $(call quiet, $(CXX) $(CXXFLAGS) -DRUN_JAVA_NON_ISOLATED -o $@ -c $(SRC)/modules/java-base/java.cc -MMD, CXX $@)
+obj/java_non_isolated.o: $(java-base-path)/java.cc | init
+ $(call quiet, $(CXX) $(CXXFLAGS) -DRUN_JAVA_NON_ISOLATED -o $@ -c $(java-base-path)/java.cc -MMD, CXX $@)
+
+obj/java_non_isolated.so: obj/java_non_isolated.o $(java-base-path)/obj/jvm/java_api.o $(java-base-path)/obj/jvm/jni_helpers.o
+ $(call quiet, $(CXX) $(CXXFLAGS) -shared -o $@ $^, LINK $@)

init:
@echo " MKDIRS"
$(call very-quiet, mkdir -p obj)

module: $(java-targets)
- cd $(SRC)/modules/java-base && mvn -q --projects :runjava-common,:runjava-non-isolated package -DskipTests=true
+ cd $(java-base-path) && mvn -q --projects :runjava-common,:runjava-non-isolated package -DskipTests=true

clean:
- cd $(SRC)/modules/java-base && mvn -q clean
+ cd $(java-base-path) && mvn -q clean
-rm -f dependency-reduced-pom.xml
$(call very-quiet, $(RM) -rf obj)
diff --git a/modules/java-tests/Makefile b/modules/java-tests/Makefile
index 874f3bad..dc3dbb1b 100644
--- a/modules/java-tests/Makefile
+++ b/modules/java-tests/Makefile
@@ -10,6 +10,9 @@ endif
obj/java_isolated.o: $(SRC)/modules/java-base/java.cc | init
$(call quiet, $(CXX) $(CXXFLAGS) -o $@ -c $(SRC)/modules/java-base/java.cc -MMD, CXX $@)

+obj/java_isolated.so: obj/java_isolated.o $(java-base-path)/obj/jvm/java_api.o $(java-base-path)/obj/jvm/jni_helpers.o
+ $(call quiet, $(CXX) $(CXXFLAGS) -shared -o $@ $^, LINK $@)
+
init:
@echo " MKDIRS"
$(call very-quiet, mkdir -p obj)
diff --git a/modules/josvsym/josvsym.cc b/modules/josvsym/josvsym.cc
index 50638298..c74a713e 100644
--- a/modules/josvsym/josvsym.cc
+++ b/modules/josvsym/josvsym.cc
@@ -5,7 +5,7 @@
#include <thread>
#include <initializer_list>
#include <osv/tracecontrol.hh>
-#include <java/jvm/jni_helpers.hh>
+#include "../java-base/jvm/jni_helpers.hh"

static jvmtiEnv * jvmti;
static trace::generator_id id;
--
2.20.1

Nadav Har'El

unread,
Jan 16, 2020, 5:22:35 AM1/16/20
to Waldemar Kozaczuk, Osv Dev
On Thu, Jan 16, 2020 at 6:21 AM Waldemar Kozaczuk <jwkoz...@gmail.com> wrote:
The java_api.* and jni_helpers.* are actually only used by
java.cc and following httpserver java-related plugins:
- httpserver-jolokia-plugin
- httpserver-jvm-plugin
- josvsym

This patch moves the relevant code out from kernel
and makes it part of java.so.

Looks good. I just have a couple of small question below.
What is this change, from "fg_ssl" to "daemon_ssl", about?
What is this change about? I guess you just noticed it's not needed?

--
You received this message because you are subscribed to the Google Groups "OSv Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to osv-dev+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/osv-dev/20200116042111.4833-1-jwkozaczuk%40gmail.com.

Waldek Kozaczuk

unread,
Jan 16, 2020, 7:27:12 AM1/16/20
to OSv Development
Made it consistent with non-ssl target. Does not make any difference. 
Yep. There is no way any java targets need to depend on acpica. Just cleanup/ 

To unsubscribe from this group and stop receiving emails from it, send an email to osv...@googlegroups.com.

Commit Bot

unread,
Jan 16, 2020, 7:32:49 AM1/16/20
to osv...@googlegroups.com, Waldemar Kozaczuk
From: Waldemar Kozaczuk <jwkoz...@gmail.com>
Committer: Nadav Har'El <n...@scylladb.com>
Branch: master

java: move java_api and jni_helpers to java modules

The java_api.* and jni_helpers.* are actually only used by
java.cc and following httpserver java-related plugins:
- httpserver-jolokia-plugin
- httpserver-jvm-plugin
- josvsym

This patch moves the relevant code out from kernel
and makes it part of java.so.

Signed-off-by: Waldemar Kozaczuk <jwkoz...@gmail.com>
Message-Id: <20200116042111.4...@gmail.com>

---
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -817,8 +817,6 @@ drivers += drivers/clock-common.o
drivers += drivers/clockevent.o
drivers += core/elf.o
drivers += java/jvm/jvm_balloon.o
-drivers += java/jvm/java_api.o
-drivers += java/jvm/jni_helpers.o
drivers += drivers/random.o
drivers += drivers/zfs.o
drivers += drivers/null.o
diff --git a/modules/httpserver-api/Makefile
b/modules/httpserver-api/Makefile
--- a/modules/httpserver-api/Makefile
+++ b/modules/httpserver-api/Makefile
@@ -107,7 +107,7 @@ check-http:
check-ssl:
# Test SSL
cd $(src) && \
- make image=httpserver-api.fg_ssl,certs,openjdk8-zulu-full,jetty && \
+ make image=httpserver-api.daemon_ssl,certs,openjdk8-zulu-full,jetty && \
PYTHONPATH=$(src)/scripts
modules/httpserver-api/tests/testhttpserver-api.py \
--cert modules/certs/build/client.pem \
--key modules/certs/build/client.key \
diff --git a/modules/httpserver-api/module.py
b/modules/httpserver-api/module.py
--- a/modules/httpserver-api/module.py
+++ b/modules/httpserver-api/module.py
@@ -22,6 +22,7 @@
# httpserver will run regardless of an explicit command line
# passed with "run.py -e".
daemon = api.run_on_init(_exe + ' &!')
+daemon_ssl = api.run_on_init(_exe + ' --ssl &!')

fg = api.run(_exe)

diff --git a/modules/httpserver-jolokia-plugin/jolokia.cc
b/modules/httpserver-jolokia-plugin/jolokia.cc
--- a/modules/httpserver-jolokia-plugin/jolokia.cc
+++ b/modules/httpserver-jolokia-plugin/jolokia.cc
@@ -15,7 +15,7 @@
#include <mutex>
#include <memory>
#include <regex>
-#include <java/jvm/jni_helpers.hh>
+#include "../java-base/jvm/jni_helpers.hh"
#include "exception.hh"

using namespace httpserver::json;
diff --git a/modules/httpserver-jvm-plugin/jvm.cc
b/modules/httpserver-jvm-plugin/jvm.cc
--- a/modules/httpserver-jvm-plugin/jvm.cc
+++ b/modules/httpserver-jvm-plugin/jvm.cc
@@ -7,7 +7,7 @@

#include "jvm.hh"
#include "autogen/jvm.json.hh"
-#include "jvm/java_api.hh"
+#include "../java-base/jvm/java_api.hh"
#include <string>

namespace httpserver {
diff --git a/modules/java-base/Makefile b/modules/java-base/Makefile
--- a/modules/java-base/Makefile
+++ b/modules/java-base/Makefile
@@ -3,7 +3,7 @@ include common.gmk
ifeq ($(arch),aarch64)
java-targets :=
else
-java-targets := obj/jni/monitor.so
+java-targets := obj/jni/monitor.so obj/jvm/jni_helpers.o obj/jvm/java_api.o
endif

module: all
@@ -13,6 +13,7 @@ all: $(init) $(java-targets)
init:
@echo " MKDIRS"
$(call very-quiet, mkdir -p obj/jni)
+ $(call very-quiet, mkdir -p obj/jvm)
.PHONY: init

clean:
diff --git a/modules/java-base/common.gmk b/modules/java-base/common.gmk
--- a/modules/java-base/common.gmk
+++ b/modules/java-base/common.gmk
@@ -1,7 +1,5 @@
-
INCLUDES = -I$(src)/arch/$(arch) -I$(src) -I$(src)/include
-I$(src)/arch/common
INCLUDES += -I$(src)/include/glibc-compat
-INCLUDES += -isystem $(src)/external/$(arch)/acpica/source/include
INCLUDES += $(shell $(CXX) -E -xc++ - -v </dev/null 2>&1 | awk '/^End/
{exit} /^ .*c\+\+/ {print "-isystem" $$0}')
INCLUDES += -isystem $(src)/include/api
INCLUDES += -isystem $(src)/include/api/$(arch)
@@ -13,7 +11,9 @@ autodepend = -MD -MT $@ -MP
COMMON_FLAGS = -g -Wall -fPIC $(INCLUDES) -O2 $(autodepend)
-DCONF_debug_memory=0 -D_KERNEL
CXXFLAGS = -std=c++11 $(COMMON_FLAGS)
CFLAGS = -std=gnu99 $(COMMON_FLAGS)
+
src = $(shell readlink -f ../..)
+java-base-path := $(src)/modules/java-base

RM := /bin/rm

diff --git a/modules/java-base/java.cc b/modules/java-base/java.cc
--- a/modules/java-base/java.cc
+++ b/modules/java-base/java.cc
@@ -14,9 +14,9 @@
#include <osv/debug.hh>
#include <java/jvm/jvm_balloon.hh>
#include <osv/mempool.hh>
-#include <java/jvm/java_api.hh>
+#include "jvm/java_api.hh"
#include "osv/version.hh"
-#include <java/jvm/jni_helpers.hh>
+#include "jvm/jni_helpers.hh"
#include <osv/defer.hh>
#include <osv/app.hh>

diff --git a/modules/java-base/jvm/java_api.cc
b/modules/java-base/jvm/java_api.cc
--- a/modules/java-base/jvm/java_api.cc
+++ b/modules/java-base/jvm/java_api.cc
null
diff --git a/modules/java-base/jvm/java_api.hh
b/modules/java-base/jvm/java_api.hh
--- a/modules/java-base/jvm/java_api.hh
+++ b/modules/java-base/jvm/java_api.hh
null
diff --git a/modules/java-base/jvm/jni_helpers.cc
b/modules/java-base/jvm/jni_helpers.cc
--- a/modules/java-base/jvm/jni_helpers.cc
+++ b/modules/java-base/jvm/jni_helpers.cc
null
diff --git a/modules/java-base/jvm/jni_helpers.hh
b/modules/java-base/jvm/jni_helpers.hh
--- a/modules/java-base/jvm/jni_helpers.hh
+++ b/modules/java-base/jvm/jni_helpers.hh
null
diff --git a/modules/java-isolated/Makefile b/modules/java-isolated/Makefile
--- a/modules/java-tests/Makefile
+++ b/modules/java-tests/Makefile
@@ -10,6 +10,9 @@ endif
obj/java_isolated.o: $(SRC)/modules/java-base/java.cc | init
$(call quiet, $(CXX) $(CXXFLAGS) -o $@ -c
$(SRC)/modules/java-base/java.cc -MMD, CXX $@)

+obj/java_isolated.so: obj/java_isolated.o
$(java-base-path)/obj/jvm/java_api.o $(java-base-path)/obj/jvm/jni_helpers.o
+ $(call quiet, $(CXX) $(CXXFLAGS) -shared -o $@ $^, LINK $@)
+
init:
@echo " MKDIRS"
$(call very-quiet, mkdir -p obj)
diff --git a/modules/josvsym/josvsym.cc b/modules/josvsym/josvsym.cc
Reply all
Reply to author
Forward
0 new messages