summaryrefslogtreecommitdiff
path: root/usr/src/common
diff options
context:
space:
mode:
authorDan McDonald <danmcd@joyent.com>2022-01-31 11:01:15 -0500
committerDan McDonald <danmcd@joyent.com>2022-01-31 11:01:15 -0500
commit7ab5ebfd113bd9e0be117e1d0b0891593529382e (patch)
tree1ddbbeacda4faa28906a30b5a5127e002db41648 /usr/src/common
parentb61a8c8ab692442a9710e7766f9de1288a80f938 (diff)
parentc8f4a9f75f12adb1f76391a838d75f2b427becb6 (diff)
downloadillumos-joyent-7ab5ebfd113bd9e0be117e1d0b0891593529382e.tar.gz
[illumos-gate merge]
commit c8f4a9f75f12adb1f76391a838d75f2b427becb6 8555 vfstab(4) man incorrectly describes getvfsent(3C) commit 8ac8a393f9ba5b2bf3aeabc50511c40334e9f5c8 14413 Convert vfstab(4) to mandoc commit e8b9fe7cd6fc0b13bcf65e0380c48fcb99ac5700 6943 libmd(3lib) should mention new hash algorithms commit b51a7e2003caa1eee7cfd998a535231eb646bb8d 14412 Convert libmd(3lib) to mandoc commit 597b30361cb132283d94270df35d0536cf12895f 9855 list_next/list_prev needs a bit more detail commit 9023fe694e5cc93a381708677f172a85f250caa5 14411 Convert list_create(9F) to mandoc commit f3682895b2a97c009685f16e8a4e5d3dc80e11f2 14420 Need support for Intel I219 v16-v23 commit 89fbfe0d2fbdaef52447ae1ca77634c69a3cf220 14385 libnsl: mismatched bound commit 618372bccd696950e1d234d0ad9c94c353882dee 14358 Cron should support randomized delay commit 8c65387009c4cfaa0924c78065b46a4d4a178d41 14451 loader: want mechanism to test if we are virtualized Conflicts: usr/src/uts/intel/os/driver_aliases
Diffstat (limited to 'usr/src/common')
-rw-r--r--usr/src/common/ficl/loader.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/usr/src/common/ficl/loader.c b/usr/src/common/ficl/loader.c
index c1f5c5d0eb..515330f849 100644
--- a/usr/src/common/ficl/loader.c
+++ b/usr/src/common/ficl/loader.c
@@ -430,6 +430,35 @@ ficlFindfile(ficlVm *pVM)
ficlStackPushPointer(ficlVmGetDataStack(pVM), fp);
}
+/*
+ * isvirtualized? - Return whether the loader runs under a
+ * hypervisor.
+ *
+ * isvirtualized? ( -- addr len flag | flag )
+ */
+static void
+ficlIsvirtualizedQ(ficlVm *pVM)
+{
+ const char *hv;
+
+ FICL_STACK_CHECK(ficlVmGetDataStack(pVM), 0, 3);
+
+#ifdef _STANDALONE
+ hv = (archsw.arch_hypervisor != NULL)
+ ? (*archsw.arch_hypervisor)()
+ : NULL;
+#else
+ hv = NULL;
+#endif
+ if (hv != NULL) {
+ ficlStackPushPointer(ficlVmGetDataStack(pVM), (void *)hv);
+ ficlStackPushInteger(ficlVmGetDataStack(pVM), strlen(hv));
+ ficlStackPushInteger(ficlVmGetDataStack(pVM), FICL_TRUE);
+ } else {
+ ficlStackPushInteger(ficlVmGetDataStack(pVM), FICL_FALSE);
+ }
+}
+
void
ficlCcall(ficlVm *pVM)
{
@@ -1087,6 +1116,8 @@ ficlSystemCompilePlatform(ficlSystem *pSys)
FICL_WORD_DEFAULT);
(void) ficlDictionarySetPrimitive(dp, "findfile", ficlFindfile,
FICL_WORD_DEFAULT);
+ (void) ficlDictionarySetPrimitive(dp, "isvirtualized?",
+ ficlIsvirtualizedQ, FICL_WORD_DEFAULT);
(void) ficlDictionarySetPrimitive(dp, "ccall", ficlCcall,
FICL_WORD_DEFAULT);
(void) ficlDictionarySetPrimitive(dp, "uuid-from-string",