linux/include/net/cls_cgroup.h
<<
>>
Prefs
   1/*
   2 * cls_cgroup.h                 Control Group Classifier
   3 *
   4 * Authors:     Thomas Graf <tgraf@suug.ch>
   5 *
   6 * This program is free software; you can redistribute it and/or modify it
   7 * under the terms of the GNU General Public License as published by the Free
   8 * Software Foundation; either version 2 of the License, or (at your option)
   9 * any later version.
  10 *
  11 */
  12
  13#ifndef _NET_CLS_CGROUP_H
  14#define _NET_CLS_CGROUP_H
  15
  16#include <linux/cgroup.h>
  17#include <linux/hardirq.h>
  18#include <linux/rcupdate.h>
  19
  20#ifdef CONFIG_CGROUPS
  21struct cgroup_cls_state
  22{
  23        struct cgroup_subsys_state css;
  24        u32 classid;
  25};
  26
  27#ifdef CONFIG_NET_CLS_CGROUP
  28static inline u32 task_cls_classid(struct task_struct *p)
  29{
  30        int classid;
  31
  32        if (in_interrupt())
  33                return 0;
  34
  35        rcu_read_lock();
  36        classid = container_of(task_subsys_state(p, net_cls_subsys_id),
  37                               struct cgroup_cls_state, css)->classid;
  38        rcu_read_unlock();
  39
  40        return classid;
  41}
  42#else
  43extern int net_cls_subsys_id;
  44
  45static inline u32 task_cls_classid(struct task_struct *p)
  46{
  47        int id;
  48        u32 classid = 0;
  49
  50        if (in_interrupt())
  51                return 0;
  52
  53        rcu_read_lock();
  54        id = rcu_dereference_index_check(net_cls_subsys_id,
  55                                         rcu_read_lock_held());
  56        if (id >= 0)
  57                classid = container_of(task_subsys_state(p, id),
  58                                       struct cgroup_cls_state, css)->classid;
  59        rcu_read_unlock();
  60
  61        return classid;
  62}
  63#endif
  64#else
  65static inline u32 task_cls_classid(struct task_struct *p)
  66{
  67        return 0;
  68}
  69#endif
  70#endif  /* _NET_CLS_CGROUP_H */
  71
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.