D-Bus in the Kernel LinuxCon 2014, Tokyo, Japan May 2014 D-Bus in - - PowerPoint PPT Presentation

d bus in the kernel
SMART_READER_LITE
LIVE PREVIEW

D-Bus in the Kernel LinuxCon 2014, Tokyo, Japan May 2014 D-Bus in - - PowerPoint PPT Presentation

D-Bus in the Kernel LinuxCon 2014, Tokyo, Japan May 2014 D-Bus in the Kernel Who? Greg Kroah-Hartman, David Herrmann, Daniel Mack, Lennart Poettering, Kay Sievers with help from Tejun Heo D-Bus in the Kernel Most newer OS designs started


slide-1
SLIDE 1

D-Bus in the Kernel

LinuxCon 2014, Tokyo, Japan May 2014

D-Bus in the Kernel

slide-2
SLIDE 2

Who? Greg Kroah-Hartman, David Herrmann, Daniel Mack, Lennart Poettering, Kay Sievers with help from Tejun Heo

D-Bus in the Kernel

slide-3
SLIDE 3

Most newer OS designs started around powerful IPC Mach, QNX, Hurd, . . . Linux only had IPC primitives (sockets, fifos, shared memory)

D-Bus in the Kernel

slide-4
SLIDE 4

D-Bus is powerful IPC Method Call Transactions,

D-Bus in the Kernel

slide-5
SLIDE 5

D-Bus is powerful IPC Method Call Transactions, Signals,

D-Bus in the Kernel

slide-6
SLIDE 6

D-Bus is powerful IPC Method Call Transactions, Signals, Properties,

D-Bus in the Kernel

slide-7
SLIDE 7

D-Bus is powerful IPC Method Call Transactions, Signals, Properties, OO,

D-Bus in the Kernel

slide-8
SLIDE 8

D-Bus is powerful IPC Method Call Transactions, Signals, Properties, OO, Broadcasting,

D-Bus in the Kernel

slide-9
SLIDE 9

D-Bus is powerful IPC Method Call Transactions, Signals, Properties, OO, Broadcasting, Discovery,

D-Bus in the Kernel

slide-10
SLIDE 10

D-Bus is powerful IPC Method Call Transactions, Signals, Properties, OO, Broadcasting, Discovery, Introspection,

D-Bus in the Kernel

slide-11
SLIDE 11

D-Bus is powerful IPC Method Call Transactions, Signals, Properties, OO, Broadcasting, Discovery, Introspection, Policy,

D-Bus in the Kernel

slide-12
SLIDE 12

D-Bus is powerful IPC Method Call Transactions, Signals, Properties, OO, Broadcasting, Discovery, Introspection, Policy, Activation,

D-Bus in the Kernel

slide-13
SLIDE 13

D-Bus is powerful IPC Method Call Transactions, Signals, Properties, OO, Broadcasting, Discovery, Introspection, Policy, Activation, Synchronization,

D-Bus in the Kernel

slide-14
SLIDE 14

D-Bus is powerful IPC Method Call Transactions, Signals, Properties, OO, Broadcasting, Discovery, Introspection, Policy, Activation, Synchronization, Type-safe Marshalling,

D-Bus in the Kernel

slide-15
SLIDE 15

D-Bus is powerful IPC Method Call Transactions, Signals, Properties, OO, Broadcasting, Discovery, Introspection, Policy, Activation, Synchronization, Type-safe Marshalling, Security,

D-Bus in the Kernel

slide-16
SLIDE 16

D-Bus is powerful IPC Method Call Transactions, Signals, Properties, OO, Broadcasting, Discovery, Introspection, Policy, Activation, Synchronization, Type-safe Marshalling, Security, Monitoring,

D-Bus in the Kernel

slide-17
SLIDE 17

D-Bus is powerful IPC Method Call Transactions, Signals, Properties, OO, Broadcasting, Discovery, Introspection, Policy, Activation, Synchronization, Type-safe Marshalling, Security, Monitoring, exposes APIs/not streams,

D-Bus in the Kernel

slide-18
SLIDE 18

D-Bus is powerful IPC Method Call Transactions, Signals, Properties, OO, Broadcasting, Discovery, Introspection, Policy, Activation, Synchronization, Type-safe Marshalling, Security, Monitoring, exposes APIs/not streams, Passing of Credentials,

D-Bus in the Kernel

slide-19
SLIDE 19

D-Bus is powerful IPC Method Call Transactions, Signals, Properties, OO, Broadcasting, Discovery, Introspection, Policy, Activation, Synchronization, Type-safe Marshalling, Security, Monitoring, exposes APIs/not streams, Passing of Credentials, File Descriptor Passing,

D-Bus in the Kernel

slide-20
SLIDE 20

D-Bus is powerful IPC Method Call Transactions, Signals, Properties, OO, Broadcasting, Discovery, Introspection, Policy, Activation, Synchronization, Type-safe Marshalling, Security, Monitoring, exposes APIs/not streams, Passing of Credentials, File Descriptor Passing, Language agnostic,

D-Bus in the Kernel

slide-21
SLIDE 21

D-Bus is powerful IPC Method Call Transactions, Signals, Properties, OO, Broadcasting, Discovery, Introspection, Policy, Activation, Synchronization, Type-safe Marshalling, Security, Monitoring, exposes APIs/not streams, Passing of Credentials, File Descriptor Passing, Language agnostic, Network transparency,

D-Bus in the Kernel

slide-22
SLIDE 22

D-Bus is powerful IPC Method Call Transactions, Signals, Properties, OO, Broadcasting, Discovery, Introspection, Policy, Activation, Synchronization, Type-safe Marshalling, Security, Monitoring, exposes APIs/not streams, Passing of Credentials, File Descriptor Passing, Language agnostic, Network transparency, no trust required,

D-Bus in the Kernel

slide-23
SLIDE 23

D-Bus is powerful IPC Method Call Transactions, Signals, Properties, OO, Broadcasting, Discovery, Introspection, Policy, Activation, Synchronization, Type-safe Marshalling, Security, Monitoring, exposes APIs/not streams, Passing of Credentials, File Descriptor Passing, Language agnostic, Network transparency, no trust required, High-level error

  • concept. . .

D-Bus in the Kernel

slide-24
SLIDE 24

D-Bus has limitations

D-Bus in the Kernel

slide-25
SLIDE 25

D-Bus has limitations Suitable only for control, not payload

D-Bus in the Kernel

slide-26
SLIDE 26

D-Bus has limitations Suitable only for control, not payload It’s inefficient (10 copies, 4 complete validations, 4 context switches per duplex method call transaction)

D-Bus in the Kernel

slide-27
SLIDE 27

D-Bus has limitations Suitable only for control, not payload It’s inefficient (10 copies, 4 complete validations, 4 context switches per duplex method call transaction) Credentials one can send/recv are limited

D-Bus in the Kernel

slide-28
SLIDE 28

D-Bus has limitations Suitable only for control, not payload It’s inefficient (10 copies, 4 complete validations, 4 context switches per duplex method call transaction) Credentials one can send/recv are limited No implicit timestamping

D-Bus in the Kernel

slide-29
SLIDE 29

D-Bus has limitations Suitable only for control, not payload It’s inefficient (10 copies, 4 complete validations, 4 context switches per duplex method call transaction) Credentials one can send/recv are limited No implicit timestamping Not available in early boot, initrd, late boot

D-Bus in the Kernel

slide-30
SLIDE 30

D-Bus has limitations Suitable only for control, not payload It’s inefficient (10 copies, 4 complete validations, 4 context switches per duplex method call transaction) Credentials one can send/recv are limited No implicit timestamping Not available in early boot, initrd, late boot Hookup with security frameworks happens in userspace

D-Bus in the Kernel

slide-31
SLIDE 31

D-Bus has limitations Suitable only for control, not payload It’s inefficient (10 copies, 4 complete validations, 4 context switches per duplex method call transaction) Credentials one can send/recv are limited No implicit timestamping Not available in early boot, initrd, late boot Hookup with security frameworks happens in userspace Activatable bus services are independent from other system services

D-Bus in the Kernel

slide-32
SLIDE 32

D-Bus has limitations Suitable only for control, not payload It’s inefficient (10 copies, 4 complete validations, 4 context switches per duplex method call transaction) Credentials one can send/recv are limited No implicit timestamping Not available in early boot, initrd, late boot Hookup with security frameworks happens in userspace Activatable bus services are independent from other system services Codebase is a bit too baroque, XML, . . .

D-Bus in the Kernel

slide-33
SLIDE 33

D-Bus has limitations Suitable only for control, not payload It’s inefficient (10 copies, 4 complete validations, 4 context switches per duplex method call transaction) Credentials one can send/recv are limited No implicit timestamping Not available in early boot, initrd, late boot Hookup with security frameworks happens in userspace Activatable bus services are independent from other system services Codebase is a bit too baroque, XML, . . . No race-free exit-on-idle bus activated services

D-Bus in the Kernel

slide-34
SLIDE 34

D-Bus has limitations Suitable only for control, not payload It’s inefficient (10 copies, 4 complete validations, 4 context switches per duplex method call transaction) Credentials one can send/recv are limited No implicit timestamping Not available in early boot, initrd, late boot Hookup with security frameworks happens in userspace Activatable bus services are independent from other system services Codebase is a bit too baroque, XML, . . . No race-free exit-on-idle bus activated services . . .

D-Bus in the Kernel

slide-35
SLIDE 35

D-Bus is fantastic, solves real problems

D-Bus in the Kernel

slide-36
SLIDE 36

D-Bus is fantastic, solves real problems Right approach: good concepts, generic, comprehensive, covers all areas

D-Bus in the Kernel

slide-37
SLIDE 37

D-Bus is fantastic, solves real problems Right approach: good concepts, generic, comprehensive, covers all areas Established, it’s the single most used local, high-level IPC system

  • n Linux, bindings for most languages

D-Bus in the Kernel

slide-38
SLIDE 38

D-Bus is fantastic, solves real problems Right approach: good concepts, generic, comprehensive, covers all areas Established, it’s the single most used local, high-level IPC system

  • n Linux, bindings for most languages

Used in init system (regardless if systemd or Upstart), the desktops, embedded, . . .

D-Bus in the Kernel

slide-39
SLIDE 39

kdbus

D-Bus in the Kernel

slide-40
SLIDE 40

kdbus Suitable for large data (GiB!), zero-copy, optionally reusable

D-Bus in the Kernel

slide-41
SLIDE 41

kdbus Suitable for large data (GiB!), zero-copy, optionally reusable It’s efficient (2 or fewer copies, 2 validations, 2 context switches per duplex methd call transaction)

D-Bus in the Kernel

slide-42
SLIDE 42

kdbus Suitable for large data (GiB!), zero-copy, optionally reusable It’s efficient (2 or fewer copies, 2 validations, 2 context switches per duplex methd call transaction) Credentials sent along are comprehensive (uid, pid, gid, selinux label, pid starttime, tid, comm, tid comm, argv, exe, cgroup, caps, audit, . . . )

D-Bus in the Kernel

slide-43
SLIDE 43

kdbus Suitable for large data (GiB!), zero-copy, optionally reusable It’s efficient (2 or fewer copies, 2 validations, 2 context switches per duplex methd call transaction) Credentials sent along are comprehensive (uid, pid, gid, selinux label, pid starttime, tid, comm, tid comm, argv, exe, cgroup, caps, audit, . . . ) Implicit timestamping

D-Bus in the Kernel

slide-44
SLIDE 44

kdbus Suitable for large data (GiB!), zero-copy, optionally reusable It’s efficient (2 or fewer copies, 2 validations, 2 context switches per duplex methd call transaction) Credentials sent along are comprehensive (uid, pid, gid, selinux label, pid starttime, tid, comm, tid comm, argv, exe, cgroup, caps, audit, . . . ) Implicit timestamping Always available, from earliest boot to latest shutdown

D-Bus in the Kernel

slide-45
SLIDE 45

kdbus Suitable for large data (GiB!), zero-copy, optionally reusable It’s efficient (2 or fewer copies, 2 validations, 2 context switches per duplex methd call transaction) Credentials sent along are comprehensive (uid, pid, gid, selinux label, pid starttime, tid, comm, tid comm, argv, exe, cgroup, caps, audit, . . . ) Implicit timestamping Always available, from earliest boot to latest shutdown Open for LSMs to hook into from the kernel side

D-Bus in the Kernel

slide-46
SLIDE 46

kdbus Suitable for large data (GiB!), zero-copy, optionally reusable It’s efficient (2 or fewer copies, 2 validations, 2 context switches per duplex methd call transaction) Credentials sent along are comprehensive (uid, pid, gid, selinux label, pid starttime, tid, comm, tid comm, argv, exe, cgroup, caps, audit, . . . ) Implicit timestamping Always available, from earliest boot to latest shutdown Open for LSMs to hook into from the kernel side Activation is identical to activation of other services

D-Bus in the Kernel

slide-47
SLIDE 47

kdbus Suitable for large data (GiB!), zero-copy, optionally reusable It’s efficient (2 or fewer copies, 2 validations, 2 context switches per duplex methd call transaction) Credentials sent along are comprehensive (uid, pid, gid, selinux label, pid starttime, tid, comm, tid comm, argv, exe, cgroup, caps, audit, . . . ) Implicit timestamping Always available, from earliest boot to latest shutdown Open for LSMs to hook into from the kernel side Activation is identical to activation of other services Userspace is much simpler, no XML, . . .

D-Bus in the Kernel

slide-48
SLIDE 48

kdbus Suitable for large data (GiB!), zero-copy, optionally reusable It’s efficient (2 or fewer copies, 2 validations, 2 context switches per duplex methd call transaction) Credentials sent along are comprehensive (uid, pid, gid, selinux label, pid starttime, tid, comm, tid comm, argv, exe, cgroup, caps, audit, . . . ) Implicit timestamping Always available, from earliest boot to latest shutdown Open for LSMs to hook into from the kernel side Activation is identical to activation of other services Userspace is much simpler, no XML, . . . Priority queues, . . .

D-Bus in the Kernel

slide-49
SLIDE 49

kdbus Suitable for large data (GiB!), zero-copy, optionally reusable It’s efficient (2 or fewer copies, 2 validations, 2 context switches per duplex methd call transaction) Credentials sent along are comprehensive (uid, pid, gid, selinux label, pid starttime, tid, comm, tid comm, argv, exe, cgroup, caps, audit, . . . ) Implicit timestamping Always available, from earliest boot to latest shutdown Open for LSMs to hook into from the kernel side Activation is identical to activation of other services Userspace is much simpler, no XML, . . . Priority queues, . . . Race-free exit-on-idle for bus activated services

D-Bus in the Kernel

slide-50
SLIDE 50

kdbus Suitable for large data (GiB!), zero-copy, optionally reusable It’s efficient (2 or fewer copies, 2 validations, 2 context switches per duplex methd call transaction) Credentials sent along are comprehensive (uid, pid, gid, selinux label, pid starttime, tid, comm, tid comm, argv, exe, cgroup, caps, audit, . . . ) Implicit timestamping Always available, from earliest boot to latest shutdown Open for LSMs to hook into from the kernel side Activation is identical to activation of other services Userspace is much simpler, no XML, . . . Priority queues, . . . Race-free exit-on-idle for bus activated services . . .

D-Bus in the Kernel

slide-51
SLIDE 51

Overview

D-Bus in the Kernel

slide-52
SLIDE 52

Overview Receiver buffers

D-Bus in the Kernel

slide-53
SLIDE 53

Overview Receiver buffers Single copy to destination(s)

D-Bus in the Kernel

slide-54
SLIDE 54

Overview Receiver buffers Single copy to destination(s) Method call windows

D-Bus in the Kernel

slide-55
SLIDE 55

Overview Receiver buffers Single copy to destination(s) Method call windows Name registry

D-Bus in the Kernel

slide-56
SLIDE 56

memfds

D-Bus in the Kernel

slide-57
SLIDE 57

memfds File descriptors for memory regions

D-Bus in the Kernel

slide-58
SLIDE 58

memfds File descriptors for memory regions Zero Copy!

D-Bus in the Kernel

slide-59
SLIDE 59

memfds File descriptors for memory regions Zero Copy! Sealing

D-Bus in the Kernel

slide-60
SLIDE 60

memfds File descriptors for memory regions Zero Copy! Sealing At 512K zero copy is faster than single copy

D-Bus in the Kernel

slide-61
SLIDE 61

memfds File descriptors for memory regions Zero Copy! Sealing At 512K zero copy is faster than single copy (a bit like Android ashmem)

D-Bus in the Kernel

slide-62
SLIDE 62

Signal Broadcasting

D-Bus in the Kernel

slide-63
SLIDE 63

Signal Broadcasting Bloom Filters

D-Bus in the Kernel

slide-64
SLIDE 64

Signal Broadcasting Bloom Filters Every broadcast message includes bloom filter (calculated by sender) that contains all supported matches, kernel will then simply check receiver bloom filter mask (calculated by receiver) against it.

D-Bus in the Kernel

slide-65
SLIDE 65

Signal Broadcasting Bloom Filters Every broadcast message includes bloom filter (calculated by sender) that contains all supported matches, kernel will then simply check receiver bloom filter mask (calculated by receiver) against it. Bloom filter uses SipHash, but kernel doesn’t care

D-Bus in the Kernel

slide-66
SLIDE 66

Policy:

D-Bus in the Kernel

slide-67
SLIDE 67

Policy: No XML, only simple ACL policy attached to service names

D-Bus in the Kernel

slide-68
SLIDE 68

Policy: No XML, only simple ACL policy attached to service names More fine-grained access control needs to be done in userspace, but it’s much easier

D-Bus in the Kernel

slide-69
SLIDE 69

Policy: No XML, only simple ACL policy attached to service names More fine-grained access control needs to be done in userspace, but it’s much easier Use capability checks!

D-Bus in the Kernel

slide-70
SLIDE 70

Policy: No XML, only simple ACL policy attached to service names More fine-grained access control needs to be done in userspace, but it’s much easier Use capability checks! PolicyKit

D-Bus in the Kernel

slide-71
SLIDE 71

Differences in Userspace:

D-Bus in the Kernel

slide-72
SLIDE 72

Differences in Userspace: GVariant used for marshalling (O(1) random access to struct and array fields)

D-Bus in the Kernel

slide-73
SLIDE 73

Differences in Userspace: GVariant used for marshalling (O(1) random access to struct and array fields) Setup, activation, policy management, driver, proxy lives in systemd

D-Bus in the Kernel

slide-74
SLIDE 74

Differences in Userspace: GVariant used for marshalling (O(1) random access to struct and array fields) Setup, activation, policy management, driver, proxy lives in systemd New libsystemd-bus client library: waaaaay nicer to use – but not portable to non-Linux

D-Bus in the Kernel

slide-75
SLIDE 75

Proxy: provides compatibility with dbus1 sockets

D-Bus in the Kernel

slide-76
SLIDE 76

Proxy: provides compatibility with dbus1 sockets Synthesizes obsolete AcquiredName, LostName, Hello messages

D-Bus in the Kernel

slide-77
SLIDE 77

Proxy: provides compatibility with dbus1 sockets Synthesizes obsolete AcquiredName, LostName, Hello messages Implements XML policy

D-Bus in the Kernel

slide-78
SLIDE 78

Proxy: provides compatibility with dbus1 sockets Synthesizes obsolete AcquiredName, LostName, Hello messages Implements XML policy Activated on demand, exits on idle

D-Bus in the Kernel

slide-79
SLIDE 79

Proxy: provides compatibility with dbus1 sockets Synthesizes obsolete AcquiredName, LostName, Hello messages Implements XML policy Activated on demand, exits on idle Remarshals gvariant/dbus1

D-Bus in the Kernel

slide-80
SLIDE 80

Driver: translates driver method calls into ioctl calls

D-Bus in the Kernel

slide-81
SLIDE 81

Driver: translates driver method calls into ioctl calls

  • rg.freedesktop.DBus pseudo-service is a real service on kdbus

D-Bus in the Kernel

slide-82
SLIDE 82

Driver: translates driver method calls into ioctl calls

  • rg.freedesktop.DBus pseudo-service is a real service on kdbus

Note that driver signals are synthesized on client side, so the driver

  • nly handles method calls

D-Bus in the Kernel

slide-83
SLIDE 83

Driver: translates driver method calls into ioctl calls

  • rg.freedesktop.DBus pseudo-service is a real service on kdbus

Note that driver signals are synthesized on client side, so the driver

  • nly handles method calls

Activated on demand, exits on idle

D-Bus in the Kernel

slide-84
SLIDE 84

Activation: new .busname unit type in systemd

D-Bus in the Kernel

slide-85
SLIDE 85

Activation: new .busname unit type in systemd Identical to .socket unit types for socket activation

D-Bus in the Kernel

slide-86
SLIDE 86

Activation: new .busname unit type in systemd Identical to .socket unit types for socket activation dbus1 bus activation files still supported, but only for clients connecting via the proxy

D-Bus in the Kernel

slide-87
SLIDE 87

libsystemd-bus

D-Bus in the Kernel

slide-88
SLIDE 88

libsystemd-bus New client library, designed to be easy to use

D-Bus in the Kernel

slide-89
SLIDE 89

libsystemd-bus New client library, designed to be easy to use Not portable to non-Linux

D-Bus in the Kernel

slide-90
SLIDE 90

libsystemd-bus New client library, designed to be easy to use Not portable to non-Linux Assemble and parse messages with format strings

D-Bus in the Kernel

slide-91
SLIDE 91

libsystemd-bus New client library, designed to be easy to use Not portable to non-Linux Assemble and parse messages with format strings Handles introspection, signal dispatching, method vtables, properties, object manager

D-Bus in the Kernel

slide-92
SLIDE 92

libsystemd-bus New client library, designed to be easy to use Not portable to non-Linux Assemble and parse messages with format strings Handles introspection, signal dispatching, method vtables, properties, object manager Lots of convenience functions

D-Bus in the Kernel

slide-93
SLIDE 93

libsystemd-bus New client library, designed to be easy to use Not portable to non-Linux Assemble and parse messages with format strings Handles introspection, signal dispatching, method vtables, properties, object manager Lots of convenience functions Focus on converting errno from/to bus errors

D-Bus in the Kernel

slide-94
SLIDE 94

libsystemd-bus New client library, designed to be easy to use Not portable to non-Linux Assemble and parse messages with format strings Handles introspection, signal dispatching, method vtables, properties, object manager Lots of convenience functions Focus on converting errno from/to bus errors Connect to container, connect to remote

D-Bus in the Kernel

slide-95
SLIDE 95

libsystemd-bus New client library, designed to be easy to use Not portable to non-Linux Assemble and parse messages with format strings Handles introspection, signal dispatching, method vtables, properties, object manager Lots of convenience functions Focus on converting errno from/to bus errors Connect to container, connect to remote Credentials include units, slices, sessions, . . .

D-Bus in the Kernel

slide-96
SLIDE 96

libsystemd-bus New client library, designed to be easy to use Not portable to non-Linux Assemble and parse messages with format strings Handles introspection, signal dispatching, method vtables, properties, object manager Lots of convenience functions Focus on converting errno from/to bus errors Connect to container, connect to remote Credentials include units, slices, sessions, . . . It’s probably what you want to use when you hack on system level software, and up

D-Bus in the Kernel

slide-97
SLIDE 97

Android binder

D-Bus in the Kernel

slide-98
SLIDE 98

Android binder Some similar technical concepts, different semantics

D-Bus in the Kernel

slide-99
SLIDE 99

Android binder Some similar technical concepts, different semantics No name registry, no broadcasts, no ordering

D-Bus in the Kernel

slide-100
SLIDE 100

When?

D-Bus in the Kernel

slide-101
SLIDE 101

When? It’s all in kdbus git, and systemd git, now!

D-Bus in the Kernel

slide-102
SLIDE 102

When? It’s all in kdbus git, and systemd git, now! Compile-time switch in systemd

D-Bus in the Kernel

slide-103
SLIDE 103

When? It’s all in kdbus git, and systemd git, now! Compile-time switch in systemd We hope to get kdbus reviewed and accepted into the kernel in 2014

D-Bus in the Kernel

slide-104
SLIDE 104

When? It’s all in kdbus git, and systemd git, now! Compile-time switch in systemd We hope to get kdbus reviewed and accepted into the kernel in 2014 gdbus support coming soon, also libdbus1 support

D-Bus in the Kernel

slide-105
SLIDE 105

When? It’s all in kdbus git, and systemd git, now! Compile-time switch in systemd We hope to get kdbus reviewed and accepted into the kernel in 2014 gdbus support coming soon, also libdbus1 support Google for git repos!

D-Bus in the Kernel

slide-106
SLIDE 106

Outlook

D-Bus in the Kernel

slide-107
SLIDE 107

Outlook Sandboxing

D-Bus in the Kernel

slide-108
SLIDE 108

Outlook Sandboxing Yielding CPU time to destination

D-Bus in the Kernel

slide-109
SLIDE 109

Outlook Sandboxing Yielding CPU time to destination Priority inheritance

D-Bus in the Kernel

slide-110
SLIDE 110

Outlook Sandboxing Yielding CPU time to destination Priority inheritance Priority queues . . .

D-Bus in the Kernel

slide-111
SLIDE 111

That’s all, folks!

D-Bus in the Kernel