diff --git a/dmtree/tr181/deviceinfo-iopsyswrt.c b/dmtree/tr181/deviceinfo-iopsyswrt.c index 28be98c9..9c4b539f 100644 --- a/dmtree/tr181/deviceinfo-iopsyswrt.c +++ b/dmtree/tr181/deviceinfo-iopsyswrt.c @@ -170,7 +170,17 @@ int os__get_process_size(char* refparam, struct dmctx *ctx, void *data, char *in /*#Device.DeviceInfo.ProcessStatus.Process.{i}.Priority!UBUS:router.system/processes//processes[@i-1].priority*/ int os__get_process_priority(char* refparam, struct dmctx *ctx, void *data, char *instance, char **value) { + int priority = 0; + *value = dmjson_get_value((json_object *)data, 1, "priority"); + + priority = (*value && **value) ? atoi(*value) : 0; + + /* Convert Linux priority to a value between 0 and 99 */ + priority = round((priority + 100) * 99 / 139); + + dmasprintf(value, "%d", priority); + return 0; } diff --git a/libbbf_api/dmcommon.h b/libbbf_api/dmcommon.h index a7a70fcd..b53b2576 100644 --- a/libbbf_api/dmcommon.h +++ b/libbbf_api/dmcommon.h @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include