linux/include/linux/taskstats_kern.h
<<
>>
Prefs
   1/* taskstats_kern.h - kernel header for per-task statistics interface
   2 *
   3 * Copyright (C) Shailabh Nagar, IBM Corp. 2006
   4 *           (C) Balbir Singh,   IBM Corp. 2006
   5 */
   6
   7#ifndef _LINUX_TASKSTATS_KERN_H
   8#define _LINUX_TASKSTATS_KERN_H
   9
  10#include <linux/taskstats.h>
  11#include <linux/sched.h>
  12#include <net/genetlink.h>
  13
  14#ifdef CONFIG_TASKSTATS
  15extern kmem_cache_t *taskstats_cache;
  16extern struct mutex taskstats_exit_mutex;
  17
  18static inline void taskstats_exit_free(struct taskstats *tidstats)
  19{
  20        if (tidstats)
  21                kmem_cache_free(taskstats_cache, tidstats);
  22}
  23
  24static inline void taskstats_tgid_init(struct signal_struct *sig)
  25{
  26        spin_lock_init(&sig->stats_lock);
  27        sig->stats = NULL;
  28}
  29
  30static inline void taskstats_tgid_alloc(struct signal_struct *sig)
  31{
  32        struct taskstats *stats;
  33        unsigned long flags;
  34
  35        stats = kmem_cache_zalloc(taskstats_cache, SLAB_KERNEL);
  36        if (!stats)
  37                return;
  38
  39        spin_lock_irqsave(&sig->stats_lock, flags);
  40        if (!sig->stats) {
  41                sig->stats = stats;
  42                stats = NULL;
  43        }
  44        spin_unlock_irqrestore(&sig->stats_lock, flags);
  45
  46        if (stats)
  47                kmem_cache_free(taskstats_cache, stats);
  48}
  49
  50static inline void taskstats_tgid_free(struct signal_struct *sig)
  51{
  52        struct taskstats *stats = NULL;
  53        unsigned long flags;
  54
  55        spin_lock_irqsave(&sig->stats_lock, flags);
  56        if (sig->stats) {
  57                stats = sig->stats;
  58                sig->stats = NULL;
  59        }
  60        spin_unlock_irqrestore(&sig->stats_lock, flags);
  61        if (stats)
  62                kmem_cache_free(taskstats_cache, stats);
  63}
  64
  65extern void taskstats_exit_alloc(struct taskstats **, unsigned int *);
  66extern void taskstats_exit_send(struct task_struct *, struct taskstats *, int, unsigned int);
  67extern void taskstats_init_early(void);
  68extern void taskstats_tgid_alloc(struct signal_struct *);
  69#else
  70static inline void taskstats_exit_alloc(struct taskstats **ptidstats, unsigned int *mycpu)
  71{}
  72static inline void taskstats_exit_free(struct taskstats *ptidstats)
  73{}
  74static inline void taskstats_exit_send(struct task_struct *tsk,
  75                                       struct taskstats *tidstats,
  76                                       int group_dead, unsigned int cpu)
  77{}
  78static inline void taskstats_tgid_init(struct signal_struct *sig)
  79{}
  80static inline void taskstats_tgid_alloc(struct signal_struct *sig)
  81{}
  82static inline void taskstats_tgid_free(struct signal_struct *sig)
  83{}
  84static inline void taskstats_init_early(void)
  85{}
  86#endif /* CONFIG_TASKSTATS */
  87
  88#endif
  89
  90
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.