summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile.am8
-rw-r--r--configure.ac4
-rw-r--r--freebsd/FreeBSDCRT.c21
-rw-r--r--freebsd/FreeBSDCRT.h15
-rw-r--r--freebsd/FreeBSDProcessList.c39
-rw-r--r--freebsd/FreeBSDProcessList.h18
-rw-r--r--freebsd/Platform.c17
-rw-r--r--freebsd/Platform.h17
8 files changed, 139 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am
index d3b68662..10dcb395 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -41,6 +41,14 @@ myhtopplatheaders = linux/Platform.h linux/IOPriorityPanel.h linux/IOPriority.h
linux/LinuxProcess.h linux/LinuxProcessList.h linux/LinuxCRT.h
endif
+if HTOP_FREEBSD
+myhtopplatsources = freebsd/Platform.c freebsd/FreeBSDProcessList.c \
+freebsd/FreeBSDCRT.c
+
+myhtopplatheaders = freebsd/Platform.h freebsd/FreeBSDProcessList.h \
+freebsd/FreeBSDCRT.h
+endif
+
if HTOP_UNSUPPORTED
myhtopplatsources = unsupported/Platform.c unsupported/UnsupportedProcessList.c \
unsupported/UnsupportedCRT.c
diff --git a/configure.ac b/configure.ac
index bc586d99..e484839a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -28,6 +28,9 @@ case "$target" in
*linux*)
my_htop_platform=linux
;;
+*freebsd*)
+ my_htop_platform=freebsd
+ ;;
*)
my_htop_platform=unsupported
;;
@@ -183,6 +186,7 @@ fi
# We're done, let's go!
# ----------------------------------------------------------------------
AM_CONDITIONAL([HTOP_LINUX], [test "$my_htop_platform" = linux])
+AM_CONDITIONAL([HTOP_FREEBSD], [test "$my_htop_platform" = freebsd])
AM_CONDITIONAL([HTOP_UNSUPPORTED], [test "$my_htop_platform" = unsupported])
AC_SUBST(my_htop_platform)
AC_CONFIG_FILES([Makefile htop.1])
diff --git a/freebsd/FreeBSDCRT.c b/freebsd/FreeBSDCRT.c
new file mode 100644
index 00000000..c4e65eeb
--- /dev/null
+++ b/freebsd/FreeBSDCRT.c
@@ -0,0 +1,21 @@
+/*
+htop - UnsupportedCRT.c
+(C) 2014 Hisham H. Muhammad
+Released under the GNU GPL, see the COPYING file
+in the source distribution for its full text.
+*/
+
+#include "config.h"
+#include "CRT.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+void CRT_handleSIGSEGV(int sgn) {
+ (void) sgn;
+ CRT_done();
+ fprintf(stderr, "\n\nhtop " VERSION " aborting.\n");
+ fprintf(stderr, "\nUnfortunately, you seem to be using an unsupported platform!");
+ fprintf(stderr, "\nPlease contact your platform package mantainer!\n\n");
+ abort();
+}
+
diff --git a/freebsd/FreeBSDCRT.h b/freebsd/FreeBSDCRT.h
new file mode 100644
index 00000000..3c808ca6
--- /dev/null
+++ b/freebsd/FreeBSDCRT.h
@@ -0,0 +1,15 @@
+/* Do not edit this file. It was automatically generated. */
+
+#ifndef HEADER_UnsupportedCRT
+#define HEADER_UnsupportedCRT
+/*
+htop - UnsupportedCRT.h
+(C) 2014 Hisham H. Muhammad
+Released under the GNU GPL, see the COPYING file
+in the source distribution for its full text.
+*/
+
+void CRT_handleSIGSEGV(int sgn);
+
+
+#endif
diff --git a/freebsd/FreeBSDProcessList.c b/freebsd/FreeBSDProcessList.c
new file mode 100644
index 00000000..275c1082
--- /dev/null
+++ b/freebsd/FreeBSDProcessList.c
@@ -0,0 +1,39 @@
+/*
+htop - UnsupportedProcessList.c
+(C) 2014 Hisham H. Muhammad
+Released under the GNU GPL, see the COPYING file
+in the source distribution for its full text.
+*/
+
+#include "ProcessList.h"
+
+#include <stdlib.h>
+#include <sys/sysctl.h>
+
+/*{
+
+}*/
+
+ProcessList* ProcessList_new(UsersTable* usersTable, Hashtable* pidWhiteList) {
+ ProcessList* this = calloc(1, sizeof(ProcessList));
+ ProcessList_init(this, usersTable, pidWhiteList);
+
+ int cpus = 1;
+ size_t sizeof_cpus = sizeof(cpus);
+ int err = sysctlbyname("hw.ncpu", &cpus, &sizeof_cpus, NULL, 0);
+ if (err) cpus = 1;
+ this->cpuCount = MAX(cpus, 1);
+ this->cpus = realloc(this->cpus, cpus * sizeof(CPUData));
+
+ for (int i = 0; i < cpus; i++) {
+ this->cpus[i].totalTime = 1;
+ this->cpus[i].totalPeriod = 1;
+ }
+
+ return this;
+}
+
+void ProcessList_scan(ProcessList* this) {
+ (void) this;
+ // stub!
+}
diff --git a/freebsd/FreeBSDProcessList.h b/freebsd/FreeBSDProcessList.h
new file mode 100644
index 00000000..ed9a7a36
--- /dev/null
+++ b/freebsd/FreeBSDProcessList.h
@@ -0,0 +1,18 @@
+/* Do not edit this file. It was automatically generated. */
+
+#ifndef HEADER_FreeBSDProcessList
+#define HEADER_FreeBSDProcessList
+/*
+htop - UnsupportedProcessList.h
+(C) 2014 Hisham H. Muhammad
+Released under the GNU GPL, see the COPYING file
+in the source distribution for its full text.
+*/
+
+
+
+ProcessList* ProcessList_new(UsersTable* usersTable, Hashtable* pidWhiteList);
+
+void ProcessList_scan(ProcessList* this);
+
+#endif
diff --git a/freebsd/Platform.c b/freebsd/Platform.c
new file mode 100644
index 00000000..b65fec40
--- /dev/null
+++ b/freebsd/Platform.c
@@ -0,0 +1,17 @@
+/*
+htop - unsupported/Platform.c
+(C) 2014 Hisham H. Muhammad
+Released under the GNU GPL, see the COPYING file
+in the source distribution for its full text.
+*/
+
+#include "Platform.h"
+
+/*{
+#include "Action.h"
+}*/
+
+void Platform_setBindings(Htop_Action* keys) {
+ (void) keys;
+}
+
diff --git a/freebsd/Platform.h b/freebsd/Platform.h
new file mode 100644
index 00000000..65a31993
--- /dev/null
+++ b/freebsd/Platform.h
@@ -0,0 +1,17 @@
+/* Do not edit this file. It was automatically generated. */
+
+#ifndef HEADER_Platform
+#define HEADER_Platform
+/*
+htop - unsupported/Platform.h
+(C) 2014 Hisham H. Muhammad
+Released under the GNU GPL, see the COPYING file
+in the source distribution for its full text.
+*/
+
+#include "Action.h"
+
+void Platform_setBindings(Htop_Action* keys);
+
+
+#endif