mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-01-17 04:52:59 +01:00
sys/shell: Add nice shell command via module nice
This commit is contained in:
parent
3d7d797a57
commit
ed9bf358c5
@ -108,6 +108,7 @@ PSEUDOMODULES += nimble_autoconn_%
|
||||
PSEUDOMODULES += newlib
|
||||
PSEUDOMODULES += newlib_gnu_source
|
||||
PSEUDOMODULES += newlib_nano
|
||||
PSEUDOMODULES += nice
|
||||
PSEUDOMODULES += nrf24l01p_ng_diagnostics
|
||||
PSEUDOMODULES += openthread
|
||||
PSEUDOMODULES += picolibc
|
||||
|
@ -14,6 +14,9 @@ endif
|
||||
ifneq (,$(filter mci,$(USEMODULE)))
|
||||
SRC += sc_disk.c
|
||||
endif
|
||||
ifneq (,$(filter nice,$(USEMODULE)))
|
||||
SRC += sc_nice.c
|
||||
endif
|
||||
ifneq (,$(filter periph_pm,$(USEMODULE)))
|
||||
SRC += sc_pm.c
|
||||
endif
|
||||
|
53
sys/shell/commands/sc_nice.c
Normal file
53
sys/shell/commands/sc_nice.c
Normal file
@ -0,0 +1,53 @@
|
||||
/*
|
||||
* Copyright (C) 2021 Otto-von-Guericke-Universität Magdeburg
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU Lesser
|
||||
* General Public License v2.1. See the file LICENSE in the top level
|
||||
* directory for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ingroup sys_shell_commands
|
||||
* @{
|
||||
*
|
||||
* @file
|
||||
* @brief A shell command to change the niceness (inverse priority) of a thread
|
||||
*
|
||||
* @note Enable this by using the modules shell_commands and nice
|
||||
*
|
||||
* @author Marian Buschsieweke <marian.buschsieweke@ovgu.de>
|
||||
*
|
||||
* @}
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "sched.h"
|
||||
#include "thread.h"
|
||||
|
||||
int _sc_nice(int argc, char **argv)
|
||||
{
|
||||
if (argc != 3) {
|
||||
printf("Usage: %s <THREAD_ID> <PRIORITY>\n"
|
||||
"Note: Lower number means higher priority (niceness)\n",
|
||||
argv[0]);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
/* Note: thread_get() does bounds checking and returns NULL on out of bounds PID */
|
||||
thread_t *thread = thread_get(atoi(argv[1]));
|
||||
if (!thread) {
|
||||
printf("No active thread found for ID \"%s\"\n", argv[1]);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
uint8_t prio = atoi(argv[2]);
|
||||
if (prio >= SCHED_PRIO_LEVELS) {
|
||||
printf("Priority \"%s\" is invalid (try 0..%u)\n",
|
||||
argv[2], (unsigned)SCHED_PRIO_LEVELS - 1);
|
||||
}
|
||||
|
||||
sched_change_priority(thread, prio);
|
||||
return EXIT_SUCCESS;
|
||||
}
|
@ -187,6 +187,10 @@ extern int _i2c_scan(int argc, char **argv);
|
||||
extern int _loramac_handler(int argc, char **argv);
|
||||
#endif
|
||||
|
||||
#ifdef MODULE_NICE
|
||||
extern int _sc_nice(int argc, char **argv);
|
||||
#endif
|
||||
|
||||
#ifdef MODULE_NIMBLE_NETIF
|
||||
extern int _nimble_netif_handler(int argc, char **argv);
|
||||
#endif
|
||||
@ -263,6 +267,9 @@ const shell_command_t _shell_command_list[] = {
|
||||
#ifdef MODULE_GNRC_IPV6_NIB
|
||||
{"nib", "Configure neighbor information base", _gnrc_ipv6_nib},
|
||||
#endif
|
||||
#ifdef MODULE_NICE
|
||||
{"nice", "Change priority of an active thread", _sc_nice},
|
||||
#endif
|
||||
#ifdef MODULE_NETSTATS_NEIGHBOR
|
||||
{"neigh", "Show neighbor statistics", _netstats_nb},
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user