[cpu_openbsd] Add a CPU usage widget for OpenBSD (#95)
* [cpu_openbsd] Add a CPU usage widget for OpenBSD * Remove filename from the header and fix the license name * Reindent file to get rid of tabs * Re-add file header and add space after year in copyright line * Remove space before parens * Make `ticks` local to the module
This commit is contained in:
parent
c16229a9b2
commit
9493dcaa73
|
@ -170,12 +170,15 @@ Provides CPU usage for all available CPUs/cores. Since this widget type give
|
||||||
CPU utilization between two consecutive calls, it is recommended to enable
|
CPU utilization between two consecutive calls, it is recommended to enable
|
||||||
caching if it is used to register multiple widgets (#71).
|
caching if it is used to register multiple widgets (#71).
|
||||||
|
|
||||||
Supported platforms: GNU/Linux, FreeBSD.
|
Supported platforms: GNU/Linux, FreeBSD, OpenBSD.
|
||||||
|
|
||||||
Returns an array containing:
|
On FreeBSD and Linux returns an array containing:
|
||||||
* `$1`: usage of all CPUs/cores
|
* `$1`: usage of all CPUs/cores
|
||||||
* `$2`, `$3`, etc. are respectively the usage of 1st, 2nd, etc. CPU/core
|
* `$2`, `$3`, etc. are respectively the usage of 1st, 2nd, etc. CPU/core
|
||||||
|
|
||||||
|
On OpenBSD returns an array containing:
|
||||||
|
* `$1`: usage of all CPUs/cores
|
||||||
|
|
||||||
### vicious.widgets.cpufreq
|
### vicious.widgets.cpufreq
|
||||||
|
|
||||||
Provides freq, voltage and governor info for a requested CPU.
|
Provides freq, voltage and governor info for a requested CPU.
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
-- CPU usage widget type for OpenBSD
|
||||||
|
-- Copyright (C) 2019 Enric Morales
|
||||||
|
--
|
||||||
|
-- This file is part of Vicious.
|
||||||
|
--
|
||||||
|
-- Vicious is free software: you can redistribute it and/or modify
|
||||||
|
-- it under the terms of the GNU General Public License as
|
||||||
|
-- published by the Free Software Foundation, either version 2 of the
|
||||||
|
-- License, or (at your option) any later version.
|
||||||
|
--
|
||||||
|
-- Vicious is distributed in the hope that it will be useful,
|
||||||
|
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
-- GNU General Public License for more details.
|
||||||
|
--
|
||||||
|
-- You should have received a copy of the GNU General Public License
|
||||||
|
-- along with Vicious. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
local math = { ceil = math.ceil }
|
||||||
|
local string = { gmatch = string.gmatch }
|
||||||
|
local table = { insert = table.insert }
|
||||||
|
local tonumber = tonumber
|
||||||
|
|
||||||
|
local helpers = require("vicious.helpers")
|
||||||
|
|
||||||
|
|
||||||
|
-- cpu_openbsd: provides both a helper function that allows reading
|
||||||
|
-- the CPU usage on OpenBSD systems.
|
||||||
|
local cpu_openbsd = {}
|
||||||
|
|
||||||
|
-- Initialize the table that will contain the ticks spent in each subsystem
|
||||||
|
-- values: user, nice, system, spin, interrupts, idle
|
||||||
|
local ticks = { 0, 0, 0, 0, 0, 0 }
|
||||||
|
|
||||||
|
function cpu_openbsd.async(format, warg, callback)
|
||||||
|
helpers.sysctl_async({ "kern.cp_time" },
|
||||||
|
function (ret)
|
||||||
|
local current_ticks = {}
|
||||||
|
for match in string.gmatch(ret["kern.cp_time"], "(%d+)") do
|
||||||
|
table.insert(current_ticks, tonumber(match))
|
||||||
|
end
|
||||||
|
|
||||||
|
local period_ticks = {}
|
||||||
|
for i = 1, 6 do
|
||||||
|
table.insert(period_ticks,
|
||||||
|
current_ticks[i] - ticks[i])
|
||||||
|
end
|
||||||
|
|
||||||
|
local cpu_total, cpu_busy = 0, 0
|
||||||
|
for i = 1, 6 do cpu_total = cpu_total + period_ticks[i] end
|
||||||
|
for i = 1, 5 do cpu_busy = cpu_busy + period_ticks[i] end
|
||||||
|
|
||||||
|
local cpu_usage = math.ceil((cpu_busy / cpu_total) * 100)
|
||||||
|
|
||||||
|
ticks = current_ticks
|
||||||
|
return callback({ cpu_usage })
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
return helpers.setasyncall(cpu_openbsd)
|
Loading…
Reference in New Issue