Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
systemd
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
steam
systemd
Commits
4a875b61
Commit
4a875b61
authored
Apr 15, 2013
by
Lennart Poettering
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
kdbus: parse cgroup meta data, too
parent
c62e11ce
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
81 additions
and
29 deletions
+81
-29
src/libsystemd-bus/bus-kernel.c
src/libsystemd-bus/bus-kernel.c
+4
-2
src/libsystemd-bus/bus-message.c
src/libsystemd-bus/bus-message.c
+65
-21
src/libsystemd-bus/bus-message.h
src/libsystemd-bus/bus-message.h
+1
-1
src/libsystemd-bus/test-bus-chat.c
src/libsystemd-bus/test-bus-chat.c
+6
-1
src/systemd/sd-bus.h
src/systemd/sd-bus.h
+5
-4
No files found.
src/libsystemd-bus/bus-kernel.c
View file @
4a875b61
...
...
@@ -447,7 +447,9 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k, sd_bus_mess
else
if
(
d
->
type
==
KDBUS_MSG_SRC_CMDLINE
)
{
m
->
cmdline
=
d
->
str
;
m
->
cmdline_length
=
l
;
}
else
}
else
if
(
d
->
type
==
KDBUS_MSG_SRC_CGROUP
)
m
->
cgroup
=
d
->
str
;
else
log_debug
(
"Got unknown field from kernel %llu"
,
d
->
type
);
}
...
...
@@ -553,7 +555,7 @@ int bus_kernel_create(const char *name, char **s) {
make
->
flags
=
KDBUS_ACCESS_WORLD
|
KDBUS_POLICY_OPEN
;
make
->
bus_flags
=
0
;
make
->
bloom_size
=
BLOOM_SIZE
;
make
->
cgroup_id
=
1
;
assert_cc
(
BLOOM_SIZE
%
8
==
0
);
p
=
strjoin
(
"/dev/kdbus/"
,
make
->
name
,
"/bus"
,
NULL
);
...
...
src/libsystemd-bus/bus-message.c
View file @
4a875b61
...
...
@@ -657,8 +657,10 @@ const sd_bus_error *sd_bus_message_get_error(sd_bus_message *m) {
int
sd_bus_message_get_uid
(
sd_bus_message
*
m
,
uid_t
*
uid
)
{
if
(
!
m
)
return
-
EINVAL
;
if
(
!
uid
)
return
-
EINVAL
;
if
(
!
m
->
uid_valid
)
return
-
E
NOENT
;
return
-
E
SRCH
;
*
uid
=
m
->
uid
;
return
0
;
...
...
@@ -667,8 +669,10 @@ int sd_bus_message_get_uid(sd_bus_message *m, uid_t *uid) {
int
sd_bus_message_get_gid
(
sd_bus_message
*
m
,
gid_t
*
gid
)
{
if
(
!
m
)
return
-
EINVAL
;
if
(
!
gid
)
return
-
EINVAL
;
if
(
!
m
->
gid_valid
)
return
-
E
NOENT
;
return
-
E
SRCH
;
*
gid
=
m
->
gid
;
return
0
;
...
...
@@ -677,8 +681,10 @@ int sd_bus_message_get_gid(sd_bus_message *m, gid_t *gid) {
int
sd_bus_message_get_pid
(
sd_bus_message
*
m
,
pid_t
*
pid
)
{
if
(
!
m
)
return
-
EINVAL
;
if
(
!
pid
)
return
-
EINVAL
;
if
(
m
->
pid
<=
0
)
return
-
E
NOENT
;
return
-
E
SRCH
;
*
pid
=
m
->
pid
;
return
0
;
...
...
@@ -687,8 +693,10 @@ int sd_bus_message_get_pid(sd_bus_message *m, pid_t *pid) {
int
sd_bus_message_get_tid
(
sd_bus_message
*
m
,
pid_t
*
tid
)
{
if
(
!
m
)
return
-
EINVAL
;
if
(
!
tid
)
return
-
EINVAL
;
if
(
m
->
tid
<=
0
)
return
-
E
NOENT
;
return
-
E
SRCH
;
*
tid
=
m
->
tid
;
return
0
;
...
...
@@ -697,26 +705,32 @@ int sd_bus_message_get_tid(sd_bus_message *m, pid_t *tid) {
int
sd_bus_message_get_pid_starttime
(
sd_bus_message
*
m
,
uint64_t
*
usec
)
{
if
(
!
m
)
return
-
EINVAL
;
if
(
!
usec
)
return
-
EINVAL
;
if
(
m
->
pid_starttime
<=
0
)
return
-
E
NOENT
;
return
-
E
SRCH
;
*
usec
=
m
->
pid_starttime
;
return
0
;
}
const
char
*
sd_bus_message_get_selinux_context
(
sd_bus_message
*
m
)
{
int
sd_bus_message_get_selinux_context
(
sd_bus_message
*
m
,
const
char
**
ret
)
{
if
(
!
m
)
return
NULL
;
return
-
EINVAL
;
if
(
!
m
->
label
)
return
-
ESRCH
;
return
m
->
label
;
*
ret
=
m
->
label
;
return
0
;
}
int
sd_bus_message_get_monotonic_timestamp
(
sd_bus_message
*
m
,
uint64_t
*
usec
)
{
if
(
!
m
)
return
-
EINVAL
;
if
(
!
usec
)
return
-
EINVAL
;
if
(
m
->
monotonic
<=
0
)
return
-
E
NOENT
;
return
-
E
SRCH
;
*
usec
=
m
->
monotonic
;
return
0
;
...
...
@@ -725,33 +739,61 @@ int sd_bus_message_get_monotonic_timestamp(sd_bus_message *m, uint64_t *usec) {
int
sd_bus_message_get_realtime_timestamp
(
sd_bus_message
*
m
,
uint64_t
*
usec
)
{
if
(
!
m
)
return
-
EINVAL
;
if
(
!
usec
)
return
-
EINVAL
;
if
(
m
->
realtime
<=
0
)
return
-
E
NOENT
;
return
-
E
SRCH
;
*
usec
=
m
->
realtime
;
return
0
;
}
const
char
*
sd_bus_message_get_comm
(
sd_bus_message
*
m
)
{
int
sd_bus_message_get_comm
(
sd_bus_message
*
m
,
const
char
**
ret
)
{
if
(
!
m
)
return
NULL
;
return
-
EINVAL
;
if
(
!
ret
)
return
-
EINVAL
;
if
(
!
m
->
comm
)
return
-
ESRCH
;
return
m
->
comm
;
*
ret
=
m
->
comm
;
return
0
;
}
const
char
*
sd_bus_message_get_tid_comm
(
sd_bus_message
*
m
)
{
int
sd_bus_message_get_tid_comm
(
sd_bus_message
*
m
,
const
char
**
ret
)
{
if
(
!
m
)
return
NULL
;
return
-
EINVAL
;
if
(
!
ret
)
return
-
EINVAL
;
if
(
!
m
->
tid_comm
)
return
-
ESRCH
;
return
m
->
tid_comm
;
*
ret
=
m
->
tid_comm
;
return
0
;
}
const
char
*
sd_bus_message_get_exe
(
sd_bus_message
*
m
)
{
int
sd_bus_message_get_exe
(
sd_bus_message
*
m
,
const
char
**
ret
)
{
if
(
!
m
)
return
NULL
;
return
-
EINVAL
;
if
(
!
ret
)
return
-
EINVAL
;
if
(
!
m
->
exe
)
return
-
ESRCH
;
return
m
->
exe
;
*
ret
=
m
->
exe
;
return
0
;
}
int
sd_bus_message_get_cgroup
(
sd_bus_message
*
m
,
const
char
**
ret
)
{
if
(
!
m
)
return
-
EINVAL
;
if
(
!
ret
)
return
-
EINVAL
;
if
(
!
m
->
cgroup
)
return
-
ESRCH
;
*
ret
=
m
->
cgroup
;
return
0
;
}
int
sd_bus_message_get_cmdline
(
sd_bus_message
*
m
,
char
***
cmdline
)
{
...
...
@@ -3029,6 +3071,8 @@ int bus_message_dump(sd_bus_message *m) {
printf
(
"
\t
tid_comm=[%s]
\n
"
,
m
->
tid_comm
);
if
(
m
->
label
)
printf
(
"
\t
label=[%s]
\n
"
,
m
->
label
);
if
(
m
->
cgroup
)
printf
(
"
\t
cgroup=[%s]
\n
"
,
m
->
cgroup
);
if
(
sd_bus_message_get_cmdline
(
m
,
&
cmdline
)
>=
0
)
{
char
**
c
;
...
...
src/libsystemd-bus/bus-message.h
View file @
4a875b61
...
...
@@ -110,10 +110,10 @@ struct sd_bus_message {
const
char
*
exe
;
const
char
*
comm
;
const
char
*
tid_comm
;
const
char
*
cgroup
;
const
char
*
cmdline
;
size_t
cmdline_length
;
char
**
cmdline_array
;
};
...
...
src/libsystemd-bus/test-bus-chat.c
View file @
4a875b61
...
...
@@ -136,6 +136,7 @@ static int server(sd_bus *bus) {
while
(
!
client1_gone
||
!
client2_gone
)
{
_cleanup_bus_message_unref_
sd_bus_message
*
m
=
NULL
;
pid_t
pid
=
0
;
const
char
*
label
=
NULL
;
r
=
sd_bus_process
(
bus
,
&
m
);
if
(
r
<
0
)
{
...
...
@@ -157,7 +158,11 @@ static int server(sd_bus *bus) {
continue
;
sd_bus_message_get_pid
(
m
,
&
pid
);
log_info
(
"Got message! member=%s pid=%lu label=%s"
,
strna
(
sd_bus_message_get_member
(
m
)),
(
unsigned
long
)
pid
,
strna
(
sd_bus_message_get_selinux_context
(
m
)));
sd_bus_message_get_selinux_context
(
m
,
&
label
);
log_info
(
"Got message! member=%s pid=%lu label=%s"
,
strna
(
sd_bus_message_get_member
(
m
)),
(
unsigned
long
)
pid
,
strna
(
label
));
/* bus_message_dump(m); */
/* sd_bus_message_rewind(m, true); */
...
...
src/systemd/sd-bus.h
View file @
4a875b61
...
...
@@ -130,10 +130,11 @@ int sd_bus_message_get_gid(sd_bus_message *m, gid_t *gid);
int
sd_bus_message_get_pid
(
sd_bus_message
*
m
,
pid_t
*
pid
);
int
sd_bus_message_get_tid
(
sd_bus_message
*
m
,
pid_t
*
tid
);
int
sd_bus_message_get_pid_starttime
(
sd_bus_message
*
m
,
uint64_t
*
usec
);
const
char
*
sd_bus_message_get_selinux_context
(
sd_bus_message
*
m
);
const
char
*
sd_bus_message_get_comm
(
sd_bus_message
*
m
);
const
char
*
sd_bus_message_get_tid_comm
(
sd_bus_message
*
m
);
const
char
*
sd_bus_message_get_exe
(
sd_bus_message
*
m
);
int
sd_bus_message_get_selinux_context
(
sd_bus_message
*
m
,
const
char
**
r
);
int
sd_bus_message_get_comm
(
sd_bus_message
*
m
,
const
char
**
r
);
int
sd_bus_message_get_tid_comm
(
sd_bus_message
*
m
,
const
char
**
r
);
int
sd_bus_message_get_exe
(
sd_bus_message
*
m
,
const
char
**
r
);
int
sd_bus_message_get_cgroup
(
sd_bus_message
*
m
,
const
char
**
r
);
int
sd_bus_message_get_cmdline
(
sd_bus_message
*
m
,
char
***
cmdline
);
int
sd_bus_message_is_signal
(
sd_bus_message
*
m
,
const
char
*
interface
,
const
char
*
member
);
...
...
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