29 Sep, 2011

1 commit

  • Add an event to monitor comm value changes of tasks. Such an event
    becomes vital, if someone desires to control threads of a process in
    different manner.

    A natural characteristic of threads is its comm value, and helpfully
    application developers have an opportunity to change it in runtime.
    Reporting about such events via proc connector allows to fine-grain
    monitoring and control potentials, for instance a process control daemon
    listening to proc connector and following comm value policies can place
    specific threads to assigned cgroup partitions.

    It might be possible to achieve a pale partial one-shot likeness without
    this update, if an application changes comm value of a thread generator
    task beforehand, then a new thread is cloned, and after that proc
    connector listener gets the fork event and reads new thread's comm value
    from procfs stat file, but this change visibly simplifies and extends the
    matter.

    Signed-off-by: Vladimir Zapolskiy
    Acked-by: Evgeniy Polyakov
    Cc: David Miller
    Signed-off-by: Andrew Morton
    Signed-off-by: David S. Miller

    Vladimir Zapolskiy
     

19 Jul, 2011

1 commit

  • This change adds a procfs connector event, which is emitted on every
    successful process tracer attach or detach.

    If some process connects to other one, kernelspace connector reports
    process id and thread group id of both these involved processes. On
    disconnection null process id is returned.

    Such an event allows to create a simple automated userspace mechanism
    to be aware about processes connecting to others, therefore predefined
    process policies can be applied to them if needed.

    Note, a detach signal is emitted only in case, if a tracer process
    explicitly executes PTRACE_DETACH request. In other cases like tracee
    or tracer exit detach event from proc connector is not reported.

    Signed-off-by: Vladimir Zapolskiy
    Acked-by: Evgeniy Polyakov
    Cc: David S. Miller
    Signed-off-by: Oleg Nesterov

    Vladimir Zapolskiy
     

23 Sep, 2009

1 commit

  • The act of a process becoming a session leader is a useful signal to a
    supervising init daemon such as Upstart.

    While a daemon will normally do this as part of the process of becoming a
    daemon, it is rare for its children to do so. When the children do, it is
    nearly always a sign that the child should be considered detached from the
    parent and not supervised along with it.

    The poster-child example is OpenSSH; the per-login children call setsid()
    so that they may control the pty connected to them. If the primary daemon
    dies or is restarted, we do not want to consider the per-login children
    and want to respawn the primary daemon without killing the children.

    This patch adds a new PROC_SID_EVENT and associated structure to the
    proc_event event_data union, it arranges for this to be emitted when the
    special PIDTYPE_SID pid is set.

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Scott James Remnant
    Acked-by: Matt Helsley
    Cc: Oleg Nesterov
    Cc: Evgeniy Polyakov
    Acked-by: "David S. Miller"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Scott James Remnant
     

27 Mar, 2009

1 commit

  • A number of standard posix types are used in exported headers, which
    is not allowed if __STRICT_KERNEL_NAMES is defined. In order to
    get rid of the non-__STRICT_KERNEL_NAMES part and to make sane headers
    the default, we have to change them all to safe types.

    There are also still some leftovers in reiserfs_fs.h, elfcore.h
    and coda.h, but these files have not compiled in user space for
    a long time.

    This leaves out the various integer types ({u_,u,}int{8,16,32,64}_t),
    which we take care of separately.

    Signed-off-by: Arnd Bergmann
    Acked-by: Mauro Carvalho Chehab
    Cc: David Airlie
    Cc: Arnaldo Carvalho de Melo
    Cc: YOSHIFUJI Hideaki
    Cc: netdev@vger.kernel.org
    Cc: linux-ppp@vger.kernel.org
    Cc: Jaroslav Kysela
    Cc: Takashi Iwai
    Cc: David Woodhouse
    Signed-off-by: H. Peter Anvin
    Signed-off-by: Ingo Molnar

    Arnd Bergmann
     

01 Aug, 2006

1 commit

  • Events sent by Process Events Connector from a 64-bit kernel are not binary
    compatible with a 32-bit userspace program because the "timestamp" field
    (struct timespec) is not arch independent. This affects the fields that
    follow "timestamp" as they will be be off by 8 bytes.

    This is a problem for 32-bit userspace programs running with 64-bit kernels
    on ppc64, s390, x86-64.. any "biarch" system.

    Matt had submitted a different solution to lkml as an RFC earlier. We have
    since switched to a solution recommended by Evgeniy Polyakov.

    This patch fixes the problem by changing the timestamp to be a __u64, which
    stores the number of nanoseconds.

    Tested on a x86_64 system with both 32 bit application and 64 bit
    application and on a i386 system.

    Signed-off-by: Chandra Seetharaman
    Signed-off-by: Matt Helsley
    Cc: Evgeniy Polyakov
    Cc: Guillaume Thouvenin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Chandra Seetharaman
     

23 Jun, 2006

2 commits

  • Change the license on the process event structure passed between kernel and
    userspace.

    Signed-off-by: Matt Helsley
    Acked-by: Guillaume Thouvenin
    Acked-by: Nguyen Anh Quynh
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Helsley
     
  • Move connector header include to precisely where it's needed.

    Remove unused time.h header file as well. This was leftover from previous
    iterations of the process events patches.

    Signed-off-by: Matt Helsley
    Cc: Guillaume Thouvenin
    Cc: Nguyen Anh Quynh
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Helsley
     

13 Dec, 2005

1 commit

  • This adds a timestamp field to the events sent via the process event
    connector. The timestamp allows listeners to accurately account the
    duration(s) between a process' events and offers strong means with which
    to determine the order of events with respect to a given task while also
    avoiding the addition of per-task data.

    This alters the size and layout of the event structure and hence would
    break compatibility if process events connector as it stands in 2.6.15-rc2
    were released as a mainline kernel.

    Signed-off-by: Matt Helsley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Helsley
     

30 Nov, 2005

1 commit

  • The uid_t and gid_t fields appear to present a 32/64-bit userspace/kernel
    problem for some archs.

    This patch addresses the problem by fixing the size to the largest size for
    uid_t/gid_t used in the kernel. This preserves the total size of the event
    structure while ensuring that the layouts of the ID change event match in
    32 and 64-bit kernels and applications.

    Signed-off-by: Matt Helsley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Helsley
     

07 Nov, 2005

1 commit

  • This patch adds a connector that reports fork, exec, id change, and exit
    events for all processes to userspace. It replaces the fork_advisor patch
    that ELSA is currently using. Applications that may find these events
    useful include accounting/auditing (e.g. ELSA), system activity monitoring
    (e.g. top), security, and resource management (e.g. CKRM).

    Signed-off-by: Matt Helsley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Helsley