From 8915b293957ccaad902c190e9e2aca27eb6f8180 Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Thu, 27 Nov 2014 16:27:34 -0200 Subject: [PATCH] Beginnings of FreeBSD port! --- Makefile.am | 8 ++++++++ configure.ac | 4 ++++ freebsd/FreeBSDCRT.c | 21 +++++++++++++++++++ freebsd/FreeBSDCRT.h | 15 ++++++++++++++ freebsd/FreeBSDProcessList.c | 39 ++++++++++++++++++++++++++++++++++++ freebsd/FreeBSDProcessList.h | 18 +++++++++++++++++ freebsd/Platform.c | 17 ++++++++++++++++ freebsd/Platform.h | 17 ++++++++++++++++ 8 files changed, 139 insertions(+) create mode 100644 freebsd/FreeBSDCRT.c create mode 100644 freebsd/FreeBSDCRT.h create mode 100644 freebsd/FreeBSDProcessList.c create mode 100644 freebsd/FreeBSDProcessList.h create mode 100644 freebsd/Platform.c create mode 100644 freebsd/Platform.h 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 +#include + +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 +#include + +/*{ + +}*/ + +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