1 /* getpriority for Linux.
2    Copyright (C) 1996-2022 Free Software Foundation, Inc.
3    This file is part of the GNU C Library.
4 
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9 
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14 
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library; if not, see
17    <https://www.gnu.org/licenses/>.  */
18 
19 #include <errno.h>
20 #include <sys/resource.h>
21 
22 #include <sysdep.h>
23 #include <sys/syscall.h>
24 
25 /* The return value of getpriority syscall is biased by this value
26    to avoid returning negative values.  */
27 #define PZERO 20
28 
29 /* Return the highest priority of any process specified by WHICH and WHO
30    (see above); if WHO is zero, the current process, process group, or user
31    (as specified by WHO) is used.  A lower priority number means higher
32    priority.  Priorities range from PRIO_MIN to PRIO_MAX.  */
33 
34 int
__getpriority(enum __priority_which which,id_t who)35 __getpriority (enum __priority_which which, id_t who)
36 {
37   int res;
38 
39   res = INLINE_SYSCALL (getpriority, 2, (int) which, who);
40   if (res >= 0)
41     res = PZERO - res;
42   return res;
43 }
44 libc_hidden_def (__getpriority)
45 weak_alias (__getpriority, getpriority)
46