[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:
Enric Morales 2019-10-18 13:27:56 +02:00 committed by GitHub
parent c16229a9b2
commit 9493dcaa73
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 65 additions and 2 deletions

View File

@ -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.

60
widgets/cpu_openbsd.lua Normal file
View File

@ -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)