$NetBSD: patch-ab,v 1.4 2007/04/17 13:05:08 joerg Exp $

--- panel-plugin/os.c.orig	2004-07-24 17:25:15.000000000 +0000
+++ panel-plugin/os.c
@@ -67,6 +67,26 @@ long GetCPUUsage (int *oldusage, int *ol
 	
 	return usage;
 }
+#elif defined(__DragonFly__)
+long GetCPUUsage (int *oldusage, int *oldtotal)
+{
+	long used, total, usage;
+	struct kinfo_cputime cp_time;
+
+	if (kinfo_get_sched_cputime(&cp_time) < 0) {
+		printf ("kinfo_get_sched_cputime failed");
+		return -1;
+	}
+	used = cp_time.cp_user + cp_time.cp_nice + cp_time.cp_sys;
+	total = used + cp_time.cp_idle;
+	if (total != *oldtotal)
+		usage = 100 * (used - *oldusage + used / 2 - *oldusage / 2) / (total - *oldtotal);
+	else
+		usage = 0;
+	*oldusage = used;
+	*oldtotal = total;
+	return usage;
+}
 #elif defined (__NetBSD__)
 long GetCPUUsage (int *oldusage, int *oldtotal)
 {
