Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
htop
Commits
46d8f2ee
Commit
46d8f2ee
authored
Sep 16, 2016
by
Hisham Muhammad
Committed by
Hisham
Sep 16, 2016
Browse files
Merge pull request #551 from Explorer09/rt-signals
Real-time signals support (kill command)
parents
823481ae
0ce4835f
Changes
1
Show whitespace changes
Inline
Side-by-side
SignalsPanel.c
View file @
46d8f2ee
...
@@ -31,13 +31,36 @@ Panel* SignalsPanel_new() {
...
@@ -31,13 +31,36 @@ Panel* SignalsPanel_new() {
Panel
*
this
=
Panel_new
(
1
,
1
,
1
,
1
,
true
,
Class
(
ListItem
),
FunctionBar_newEnterEsc
(
"Send "
,
"Cancel "
));
Panel
*
this
=
Panel_new
(
1
,
1
,
1
,
1
,
true
,
Class
(
ListItem
),
FunctionBar_newEnterEsc
(
"Send "
,
"Cancel "
));
const
int
defaultSignal
=
SIGTERM
;
const
int
defaultSignal
=
SIGTERM
;
int
defaultPosition
=
15
;
int
defaultPosition
=
15
;
for
(
unsigned
int
i
=
0
;
i
<
Platform_numberOfSignals
;
i
++
)
{
unsigned
int
i
;
for
(
i
=
0
;
i
<
Platform_numberOfSignals
;
i
++
)
{
Panel_set
(
this
,
i
,
(
Object
*
)
ListItem_new
(
Platform_signals
[
i
].
name
,
Platform_signals
[
i
].
number
));
Panel_set
(
this
,
i
,
(
Object
*
)
ListItem_new
(
Platform_signals
[
i
].
name
,
Platform_signals
[
i
].
number
));
// signal 15 is not always the 15th signal in the table
// signal 15 is not always the 15th signal in the table
if
(
Platform_signals
[
i
].
number
==
defaultSignal
)
{
if
(
Platform_signals
[
i
].
number
==
defaultSignal
)
{
defaultPosition
=
i
;
defaultPosition
=
i
;
}
}
}
}
#if (defined(SIGRTMIN) && defined(SIGRTMAX))
// Real-time signals.
// SIGRTMIN and SIGRTMAX expand to libc internal functions and we have to
// grab their numbers at runtime.
static
char
buf
[
15
];
// 15 == sizeof("xx SIGRTMIN+nn")
int
rtmax
;
for
(
int
sig
=
SIGRTMIN
;
sig
<=
(
rtmax
=
SIGRTMAX
);
i
++
,
sig
++
)
{
// Every signal between SIGRTMIN and SIGRTMAX are denoted in "SIGRTMIN+n"
// notation. This matches glibc's strsignal(3) behavior.
// We deviate from behaviors of Bash, ksh and Solaris intentionally.
if
(
sig
==
rtmax
)
{
snprintf
(
buf
,
15
,
"%2d SIGRTMAX"
,
sig
);
}
else
{
int
n
=
sig
-
SIGRTMIN
;
snprintf
(
buf
,
15
,
"%2d SIGRTMIN%+d"
,
sig
,
n
);
if
(
n
==
0
)
{
buf
[
11
]
=
'\0'
;
}
}
Panel_set
(
this
,
i
,
(
Object
*
)
ListItem_new
(
buf
,
sig
));
}
#endif
Panel_setHeader
(
this
,
"Send signal:"
);
Panel_setHeader
(
this
,
"Send signal:"
);
Panel_setSelected
(
this
,
defaultPosition
);
Panel_setSelected
(
this
,
defaultPosition
);
return
this
;
return
this
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment