2006-09-19 18:43:58 +07:00
|
|
|
header-y += byteorder/
|
2007-12-28 07:51:46 +07:00
|
|
|
header-y += can/
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += dvb/
|
|
|
|
header-y += hdlc/
|
|
|
|
header-y += isdn/
|
|
|
|
header-y += nfsd/
|
|
|
|
header-y += raid/
|
2007-05-08 14:32:15 +07:00
|
|
|
header-y += spi/
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += sunrpc/
|
|
|
|
header-y += tc_act/
|
2007-08-23 02:36:01 +07:00
|
|
|
header-y += tc_ematch/
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += netfilter/
|
|
|
|
header-y += netfilter_arp/
|
|
|
|
header-y += netfilter_bridge/
|
|
|
|
header-y += netfilter_ipv4/
|
|
|
|
header-y += netfilter_ipv6/
|
2006-12-17 06:34:53 +07:00
|
|
|
header-y += usb/
|
2006-06-18 18:14:01 +07:00
|
|
|
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += affs_hardblocks.h
|
|
|
|
header-y += aio_abi.h
|
|
|
|
header-y += arcfb.h
|
|
|
|
header-y += atmapi.h
|
2008-04-29 14:59:28 +07:00
|
|
|
header-y += atmarp.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += atmbr2684.h
|
|
|
|
header-y += atmclip.h
|
|
|
|
header-y += atm_eni.h
|
|
|
|
header-y += atm_he.h
|
|
|
|
header-y += atm_idt77105.h
|
|
|
|
header-y += atmioc.h
|
|
|
|
header-y += atmlec.h
|
|
|
|
header-y += atmmpc.h
|
|
|
|
header-y += atm_nicstar.h
|
|
|
|
header-y += atmppp.h
|
|
|
|
header-y += atmsap.h
|
|
|
|
header-y += atmsvc.h
|
|
|
|
header-y += atm_zatm.h
|
|
|
|
header-y += auto_fs4.h
|
|
|
|
header-y += ax25.h
|
|
|
|
header-y += b1lli.h
|
|
|
|
header-y += baycom.h
|
|
|
|
header-y += bfs_fs.h
|
|
|
|
header-y += blkpg.h
|
|
|
|
header-y += bpqether.h
|
2009-01-19 16:37:38 +07:00
|
|
|
header-y += bsg.h
|
2007-12-28 07:51:46 +07:00
|
|
|
header-y += can.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += cdk.h
|
|
|
|
header-y += chio.h
|
|
|
|
header-y += coda_psdev.h
|
|
|
|
header-y += coff.h
|
|
|
|
header-y += comstats.h
|
2007-05-08 14:31:11 +07:00
|
|
|
header-y += const.h
|
Add cgroupstats
This patch is inspired by the discussion at
http://lkml.org/lkml/2007/4/11/187 and implements per cgroup statistics
as suggested by Andrew Morton in http://lkml.org/lkml/2007/4/11/263. The
patch is on top of 2.6.21-mm1 with Paul's cgroups v9 patches (forward
ported)
This patch implements per cgroup statistics infrastructure and re-uses
code from the taskstats interface. A new set of cgroup operations are
registered with commands and attributes. It should be very easy to
*extend* per cgroup statistics, by adding members to the cgroupstats
structure.
The current model for cgroupstats is a pull, a push model (to post
statistics on interesting events), should be very easy to add. Currently
user space requests for statistics by passing the cgroup file
descriptor. Statistics about the state of all the tasks in the cgroup
is returned to user space.
TODO's/NOTE:
This patch provides an infrastructure for implementing cgroup statistics.
Based on the needs of each controller, we can incrementally add more statistics,
event based support for notification of statistics, accumulation of taskstats
into cgroup statistics in the future.
Sample output
# ./cgroupstats -C /cgroup/a
sleeping 2, blocked 0, running 1, stopped 0, uninterruptible 0
# ./cgroupstats -C /cgroup/
sleeping 154, blocked 0, running 0, stopped 0, uninterruptible 0
If the approach looks good, I'll enhance and post the user space utility for
the same
Feedback, comments, test results are always welcome!
[akpm@linux-foundation.org: build fix]
Signed-off-by: Balbir Singh <balbir@linux.vnet.ibm.com>
Cc: Paul Menage <menage@google.com>
Cc: Jay Lan <jlan@engr.sgi.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-10-19 13:39:44 +07:00
|
|
|
header-y += cgroupstats.h
|
2008-04-29 14:59:28 +07:00
|
|
|
header-y += cramfs_fs.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += cycx_cfm.h
|
2009-02-27 17:01:42 +07:00
|
|
|
header-y += dcbnl.h
|
2007-10-06 04:31:44 +07:00
|
|
|
header-y += dlmconstants.h
|
2006-09-25 23:26:59 +07:00
|
|
|
header-y += dlm_device.h
|
2007-05-18 20:59:31 +07:00
|
|
|
header-y += dlm_netlink.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += dm-ioctl.h
|
2009-06-22 16:12:35 +07:00
|
|
|
header-y += dm-log-userspace.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += dn.h
|
|
|
|
header-y += dqblk_xfs.h
|
|
|
|
header-y += efs_fs_sb.h
|
|
|
|
header-y += elf-fdpic.h
|
|
|
|
header-y += elf-em.h
|
|
|
|
header-y += fadvise.h
|
2008-03-05 05:28:53 +07:00
|
|
|
header-y += falloc.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += fd.h
|
|
|
|
header-y += fdreg.h
|
2006-09-28 12:43:05 +07:00
|
|
|
header-y += fib_rules.h
|
2009-04-03 06:56:44 +07:00
|
|
|
header-y += fiemap.h
|
2007-05-31 22:36:23 +07:00
|
|
|
header-y += firewire-cdev.h
|
|
|
|
header-y += firewire-constants.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += fuse.h
|
|
|
|
header-y += genetlink.h
|
|
|
|
header-y += gen_stats.h
|
2008-04-29 14:59:28 +07:00
|
|
|
header-y += gfs2_ondisk.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += gigaset_dev.h
|
|
|
|
header-y += hysdn_if.h
|
2007-12-31 20:58:38 +07:00
|
|
|
header-y += i2o-dev.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += i8k.h
|
2008-04-29 14:59:28 +07:00
|
|
|
header-y += if_addrlabel.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += if_arcnet.h
|
|
|
|
header-y += if_bonding.h
|
|
|
|
header-y += if_cablemodem.h
|
|
|
|
header-y += if_fc.h
|
|
|
|
header-y += if.h
|
|
|
|
header-y += if_hippi.h
|
|
|
|
header-y += if_infiniband.h
|
|
|
|
header-y += if_packet.h
|
|
|
|
header-y += if_plip.h
|
|
|
|
header-y += if_ppp.h
|
|
|
|
header-y += if_slip.h
|
|
|
|
header-y += if_strip.h
|
2008-04-13 08:48:58 +07:00
|
|
|
header-y += if_tun.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += in_route.h
|
|
|
|
header-y += ioctl.h
|
2008-04-29 14:59:28 +07:00
|
|
|
header-y += ip6_tunnel.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += ipmi_msgdefs.h
|
|
|
|
header-y += ipsec.h
|
2008-08-01 10:45:24 +07:00
|
|
|
header-y += ip_vs.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += ipx.h
|
|
|
|
header-y += irda.h
|
|
|
|
header-y += iso_fs.h
|
|
|
|
header-y += ixjuser.h
|
|
|
|
header-y += jffs2.h
|
|
|
|
header-y += keyctl.h
|
|
|
|
header-y += limits.h
|
2006-09-24 22:13:19 +07:00
|
|
|
header-y += magic.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += major.h
|
2008-10-11 10:14:14 +07:00
|
|
|
header-y += map_to_7segment.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += matroxfb.h
|
|
|
|
header-y += meye.h
|
|
|
|
header-y += minix_fs.h
|
|
|
|
header-y += mmtimer.h
|
|
|
|
header-y += mqueue.h
|
|
|
|
header-y += mtio.h
|
|
|
|
header-y += ncp_no.h
|
2006-09-28 12:43:05 +07:00
|
|
|
header-y += neighbour.h
|
2009-03-11 16:53:16 +07:00
|
|
|
header-y += net_dropmon.h
|
2009-11-12 16:59:56 +07:00
|
|
|
header-y += net_tstamp.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += netfilter_arp.h
|
|
|
|
header-y += netrom.h
|
|
|
|
header-y += nfs2.h
|
|
|
|
header-y += nfs4_mount.h
|
|
|
|
header-y += nfs_mount.h
|
2007-04-24 02:20:05 +07:00
|
|
|
header-y += nl80211.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += param.h
|
|
|
|
header-y += pci_regs.h
|
2009-10-06 18:38:51 +07:00
|
|
|
header-y += perf_event.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += pfkeyv2.h
|
|
|
|
header-y += pg.h
|
2007-05-08 14:31:45 +07:00
|
|
|
header-y += phantom.h
|
2008-09-30 16:53:18 +07:00
|
|
|
header-y += phonet.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += pkt_cls.h
|
|
|
|
header-y += pkt_sched.h
|
|
|
|
header-y += posix_types.h
|
|
|
|
header-y += ppdev.h
|
|
|
|
header-y += prctl.h
|
|
|
|
header-y += qnxtypes.h
|
2009-06-07 20:47:13 +07:00
|
|
|
header-y += qnx4_fs.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += radeonfb.h
|
|
|
|
header-y += raw.h
|
|
|
|
header-y += resource.h
|
2009-04-07 23:07:08 +07:00
|
|
|
header-y += romfs_fs.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += rose.h
|
2007-07-31 14:38:52 +07:00
|
|
|
header-y += serial_reg.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += smbno.h
|
|
|
|
header-y += snmp.h
|
|
|
|
header-y += sockios.h
|
|
|
|
header-y += som.h
|
|
|
|
header-y += sound.h
|
2007-10-26 06:05:05 +07:00
|
|
|
header-y += suspend_ioctls.h
|
2007-05-08 14:31:49 +07:00
|
|
|
header-y += taskstats.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += telephony.h
|
|
|
|
header-y += termios.h
|
|
|
|
header-y += times.h
|
|
|
|
header-y += tiocl.h
|
|
|
|
header-y += tipc.h
|
2007-10-30 15:19:19 +07:00
|
|
|
header-y += tipc_config.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += toshiba.h
|
2008-02-22 18:39:12 +07:00
|
|
|
header-y += udf_fs_i.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += ultrasound.h
|
|
|
|
header-y += un.h
|
|
|
|
header-y += utime.h
|
2007-12-26 08:23:59 +07:00
|
|
|
header-y += veth.h
|
2006-09-19 18:43:58 +07:00
|
|
|
header-y += videotext.h
|
|
|
|
header-y += x25.h
|
2006-06-18 18:14:01 +07:00
|
|
|
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += acct.h
|
|
|
|
unifdef-y += adb.h
|
|
|
|
unifdef-y += adfs_fs.h
|
|
|
|
unifdef-y += agpgart.h
|
2008-09-05 13:11:01 +07:00
|
|
|
ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/asm/a.out.h \
|
|
|
|
$(srctree)/include/asm-$(SRCARCH)/a.out.h),)
|
2008-06-16 18:24:17 +07:00
|
|
|
unifdef-y += a.out.h
|
|
|
|
endif
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += apm_bios.h
|
|
|
|
unifdef-y += atalk.h
|
|
|
|
unifdef-y += atmdev.h
|
|
|
|
unifdef-y += atm.h
|
|
|
|
unifdef-y += atm_tcp.h
|
|
|
|
unifdef-y += audit.h
|
|
|
|
unifdef-y += auto_fs.h
|
2007-12-31 20:58:38 +07:00
|
|
|
unifdef-y += auxvec.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += binfmts.h
|
2008-09-26 15:58:02 +07:00
|
|
|
unifdef-y += blktrace_api.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += capability.h
|
|
|
|
unifdef-y += capi.h
|
|
|
|
unifdef-y += cciss_ioctl.h
|
|
|
|
unifdef-y += cdrom.h
|
|
|
|
unifdef-y += cm4000_cs.h
|
|
|
|
unifdef-y += cn_proc.h
|
|
|
|
unifdef-y += coda.h
|
|
|
|
unifdef-y += connector.h
|
|
|
|
unifdef-y += cuda.h
|
|
|
|
unifdef-y += cyclades.h
|
|
|
|
unifdef-y += dccp.h
|
2006-09-25 23:26:59 +07:00
|
|
|
unifdef-y += dlm.h
|
2008-05-18 03:58:28 +07:00
|
|
|
unifdef-y += dlm_plock.h
|
2007-10-22 07:56:19 +07:00
|
|
|
unifdef-y += edd.h
|
2008-02-07 15:15:55 +07:00
|
|
|
unifdef-y += elf.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += elfcore.h
|
|
|
|
unifdef-y += errno.h
|
|
|
|
unifdef-y += errqueue.h
|
|
|
|
unifdef-y += ethtool.h
|
|
|
|
unifdef-y += eventpoll.h
|
signal/timer/event: signalfd core
This patch series implements the new signalfd() system call.
I took part of the original Linus code (and you know how badly it can be
broken :), and I added even more breakage ;) Signals are fetched from the same
signal queue used by the process, so signalfd will compete with standard
kernel delivery in dequeue_signal(). If you want to reliably fetch signals on
the signalfd file, you need to block them with sigprocmask(SIG_BLOCK). This
seems to be working fine on my Dual Opteron machine. I made a quick test
program for it:
http://www.xmailserver.org/signafd-test.c
The signalfd() system call implements signal delivery into a file descriptor
receiver. The signalfd file descriptor if created with the following API:
int signalfd(int ufd, const sigset_t *mask, size_t masksize);
The "ufd" parameter allows to change an existing signalfd sigmask, w/out going
to close/create cycle (Linus idea). Use "ufd" == -1 if you want a brand new
signalfd file.
The "mask" allows to specify the signal mask of signals that we are interested
in. The "masksize" parameter is the size of "mask".
The signalfd fd supports the poll(2) and read(2) system calls. The poll(2)
will return POLLIN when signals are available to be dequeued. As a direct
consequence of supporting the Linux poll subsystem, the signalfd fd can use
used together with epoll(2) too.
The read(2) system call will return a "struct signalfd_siginfo" structure in
the userspace supplied buffer. The return value is the number of bytes copied
in the supplied buffer, or -1 in case of error. The read(2) call can also
return 0, in case the sighand structure to which the signalfd was attached,
has been orphaned. The O_NONBLOCK flag is also supported, and read(2) will
return -EAGAIN in case no signal is available.
If the size of the buffer passed to read(2) is lower than sizeof(struct
signalfd_siginfo), -EINVAL is returned. A read from the signalfd can also
return -ERESTARTSYS in case a signal hits the process. The format of the
struct signalfd_siginfo is, and the valid fields depends of the (->code &
__SI_MASK) value, in the same way a struct siginfo would:
struct signalfd_siginfo {
__u32 signo; /* si_signo */
__s32 err; /* si_errno */
__s32 code; /* si_code */
__u32 pid; /* si_pid */
__u32 uid; /* si_uid */
__s32 fd; /* si_fd */
__u32 tid; /* si_fd */
__u32 band; /* si_band */
__u32 overrun; /* si_overrun */
__u32 trapno; /* si_trapno */
__s32 status; /* si_status */
__s32 svint; /* si_int */
__u64 svptr; /* si_ptr */
__u64 utime; /* si_utime */
__u64 stime; /* si_stime */
__u64 addr; /* si_addr */
};
[akpm@linux-foundation.org: fix signalfd_copyinfo() on i386]
Signed-off-by: Davide Libenzi <davidel@xmailserver.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-11 12:23:13 +07:00
|
|
|
unifdef-y += signalfd.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += ext2_fs.h
|
|
|
|
unifdef-y += fb.h
|
|
|
|
unifdef-y += fcntl.h
|
|
|
|
unifdef-y += filter.h
|
|
|
|
unifdef-y += flat.h
|
2006-12-10 17:19:11 +07:00
|
|
|
unifdef-y += futex.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += fs.h
|
|
|
|
unifdef-y += gameport.h
|
|
|
|
unifdef-y += generic_serial.h
|
|
|
|
unifdef-y += hdlcdrv.h
|
|
|
|
unifdef-y += hdlc.h
|
|
|
|
unifdef-y += hdreg.h
|
2008-04-08 15:20:36 +07:00
|
|
|
unifdef-y += hid.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += hiddev.h
|
2008-04-08 15:20:36 +07:00
|
|
|
unifdef-y += hidraw.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += hpet.h
|
|
|
|
unifdef-y += i2c.h
|
2007-12-31 20:58:38 +07:00
|
|
|
unifdef-y += i2c-dev.h
|
2007-03-16 07:08:55 +07:00
|
|
|
unifdef-y += icmp.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += icmpv6.h
|
2007-01-24 13:04:35 +07:00
|
|
|
unifdef-y += if_addr.h
|
2007-03-16 07:08:55 +07:00
|
|
|
unifdef-y += if_arp.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += if_bridge.h
|
|
|
|
unifdef-y += if_ec.h
|
|
|
|
unifdef-y += if_eql.h
|
|
|
|
unifdef-y += if_ether.h
|
2006-12-07 11:40:12 +07:00
|
|
|
unifdef-y += if_fddi.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += if_frad.h
|
|
|
|
unifdef-y += if_ltalk.h
|
2007-01-24 13:04:35 +07:00
|
|
|
unifdef-y += if_link.h
|
2008-09-30 16:53:18 +07:00
|
|
|
unifdef-y += if_phonet.h
|
2007-06-28 05:43:43 +07:00
|
|
|
unifdef-y += if_pppol2tp.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += if_pppox.h
|
|
|
|
unifdef-y += if_tr.h
|
2009-02-03 04:27:44 +07:00
|
|
|
unifdef-y += if_tunnel.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += if_vlan.h
|
|
|
|
unifdef-y += igmp.h
|
|
|
|
unifdef-y += inet_diag.h
|
|
|
|
unifdef-y += in.h
|
2008-05-20 04:13:11 +07:00
|
|
|
unifdef-y += in6.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += inotify.h
|
|
|
|
unifdef-y += input.h
|
2007-03-16 07:08:55 +07:00
|
|
|
unifdef-y += ip.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += ipc.h
|
|
|
|
unifdef-y += ipmi.h
|
|
|
|
unifdef-y += ipv6.h
|
|
|
|
unifdef-y += ipv6_route.h
|
|
|
|
unifdef-y += isdn.h
|
|
|
|
unifdef-y += isdnif.h
|
2007-05-08 14:32:40 +07:00
|
|
|
unifdef-y += isdn_divertif.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += isdn_ppp.h
|
2008-08-16 17:55:04 +07:00
|
|
|
unifdef-y += ivtv.h
|
|
|
|
unifdef-y += ivtvfb.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += joystick.h
|
|
|
|
unifdef-y += kdev_t.h
|
|
|
|
unifdef-y += kd.h
|
|
|
|
unifdef-y += kernelcapi.h
|
|
|
|
unifdef-y += kernel.h
|
|
|
|
unifdef-y += keyboard.h
|
2008-09-05 13:11:01 +07:00
|
|
|
ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/asm/kvm.h \
|
|
|
|
$(srctree)/include/asm-$(SRCARCH)/kvm.h),)
|
2008-04-03 03:04:40 +07:00
|
|
|
unifdef-y += kvm.h
|
2008-07-01 23:27:16 +07:00
|
|
|
endif
|
2009-08-10 19:59:25 +07:00
|
|
|
ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/asm/kvm_para.h \
|
|
|
|
$(srctree)/include/asm-$(SRCARCH)/kvm_para.h),)
|
|
|
|
unifdef-y += kvm_para.h
|
|
|
|
endif
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += llc.h
|
|
|
|
unifdef-y += loop.h
|
|
|
|
unifdef-y += lp.h
|
|
|
|
unifdef-y += mempolicy.h
|
|
|
|
unifdef-y += mii.h
|
|
|
|
unifdef-y += mman.h
|
|
|
|
unifdef-y += mroute.h
|
2008-04-03 07:22:53 +07:00
|
|
|
unifdef-y += mroute6.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += msdos_fs.h
|
|
|
|
unifdef-y += msg.h
|
|
|
|
unifdef-y += nbd.h
|
|
|
|
unifdef-y += ncp_fs.h
|
|
|
|
unifdef-y += ncp.h
|
|
|
|
unifdef-y += ncp_mount.h
|
|
|
|
unifdef-y += netdevice.h
|
|
|
|
unifdef-y += netfilter_bridge.h
|
|
|
|
unifdef-y += netfilter_decnet.h
|
|
|
|
unifdef-y += netfilter.h
|
|
|
|
unifdef-y += netfilter_ipv4.h
|
|
|
|
unifdef-y += netfilter_ipv6.h
|
|
|
|
unifdef-y += net.h
|
|
|
|
unifdef-y += netlink.h
|
|
|
|
unifdef-y += nfs3.h
|
|
|
|
unifdef-y += nfs4.h
|
|
|
|
unifdef-y += nfsacl.h
|
|
|
|
unifdef-y += nfs_fs.h
|
|
|
|
unifdef-y += nfs.h
|
|
|
|
unifdef-y += nfs_idmap.h
|
|
|
|
unifdef-y += n_r3964.h
|
|
|
|
unifdef-y += nubus.h
|
|
|
|
unifdef-y += nvram.h
|
2007-10-17 13:26:00 +07:00
|
|
|
unifdef-y += oom.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += parport.h
|
|
|
|
unifdef-y += patchkey.h
|
|
|
|
unifdef-y += pci.h
|
2006-12-07 11:40:12 +07:00
|
|
|
unifdef-y += personality.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += pktcdvd.h
|
|
|
|
unifdef-y += pmu.h
|
|
|
|
unifdef-y += poll.h
|
|
|
|
unifdef-y += ppp_defs.h
|
|
|
|
unifdef-y += ppp-comp.h
|
2009-06-18 06:28:37 +07:00
|
|
|
unifdef-y += pps.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += ptrace.h
|
|
|
|
unifdef-y += quota.h
|
|
|
|
unifdef-y += random.h
|
2009-06-02 18:01:37 +07:00
|
|
|
unifdef-y += rfkill.h
|
2008-12-12 18:19:57 +07:00
|
|
|
unifdef-y += irqnr.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += reboot.h
|
|
|
|
unifdef-y += reiserfs_fs.h
|
|
|
|
unifdef-y += reiserfs_xattr.h
|
|
|
|
unifdef-y += route.h
|
|
|
|
unifdef-y += rtc.h
|
|
|
|
unifdef-y += rtnetlink.h
|
|
|
|
unifdef-y += scc.h
|
|
|
|
unifdef-y += sched.h
|
2007-10-22 07:56:19 +07:00
|
|
|
unifdef-y += screen_info.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += sdla.h
|
2009-10-29 23:40:17 +07:00
|
|
|
unifdef-y += securebits.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += selinux_netlink.h
|
|
|
|
unifdef-y += sem.h
|
|
|
|
unifdef-y += serial_core.h
|
|
|
|
unifdef-y += serial.h
|
|
|
|
unifdef-y += serio.h
|
|
|
|
unifdef-y += shm.h
|
|
|
|
unifdef-y += signal.h
|
|
|
|
unifdef-y += smb_fs.h
|
|
|
|
unifdef-y += smb.h
|
|
|
|
unifdef-y += smb_mount.h
|
|
|
|
unifdef-y += socket.h
|
|
|
|
unifdef-y += sonet.h
|
|
|
|
unifdef-y += sonypi.h
|
|
|
|
unifdef-y += soundcard.h
|
|
|
|
unifdef-y += stat.h
|
2006-09-22 14:00:42 +07:00
|
|
|
unifdef-y += stddef.h
|
2007-10-31 11:44:00 +07:00
|
|
|
unifdef-y += string.h
|
2008-10-19 10:28:35 +07:00
|
|
|
unifdef-y += swab.h
|
2007-05-11 12:22:43 +07:00
|
|
|
unifdef-y += synclink.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += sysctl.h
|
|
|
|
unifdef-y += tcp.h
|
|
|
|
unifdef-y += time.h
|
|
|
|
unifdef-y += timex.h
|
|
|
|
unifdef-y += tty.h
|
|
|
|
unifdef-y += types.h
|
|
|
|
unifdef-y += udp.h
|
|
|
|
unifdef-y += uinput.h
|
|
|
|
unifdef-y += uio.h
|
|
|
|
unifdef-y += unistd.h
|
|
|
|
unifdef-y += usbdevice_fs.h
|
2006-10-04 16:15:19 +07:00
|
|
|
unifdef-y += utsname.h
|
vhost_net: a kernel-level virtio server
What it is: vhost net is a character device that can be used to reduce
the number of system calls involved in virtio networking.
Existing virtio net code is used in the guest without modification.
There's similarity with vringfd, with some differences and reduced scope
- uses eventfd for signalling
- structures can be moved around in memory at any time (good for
migration, bug work-arounds in userspace)
- write logging is supported (good for migration)
- support memory table and not just an offset (needed for kvm)
common virtio related code has been put in a separate file vhost.c and
can be made into a separate module if/when more backends appear. I used
Rusty's lguest.c as the source for developing this part : this supplied
me with witty comments I wouldn't be able to write myself.
What it is not: vhost net is not a bus, and not a generic new system
call. No assumptions are made on how guest performs hypercalls.
Userspace hypervisors are supported as well as kvm.
How it works: Basically, we connect virtio frontend (configured by
userspace) to a backend. The backend could be a network device, or a tap
device. Backend is also configured by userspace, including vlan/mac
etc.
Status: This works for me, and I haven't see any crashes.
Compared to userspace, people reported improved latency (as I save up to
4 system calls per packet), as well as better bandwidth and CPU
utilization.
Features that I plan to look at in the future:
- mergeable buffers
- zero copy
- scalability tuning: figure out the best threading model to use
Note on RCU usage (this is also documented in vhost.h, near
private_pointer which is the value protected by this variant of RCU):
what is happening is that the rcu_dereference() is being used in a
workqueue item. The role of rcu_read_lock() is taken on by the start of
execution of the workqueue item, of rcu_read_unlock() by the end of
execution of the workqueue item, and of synchronize_rcu() by
flush_workqueue()/flush_work(). In the future we might need to apply
some gcc attribute or sparse annotation to the function passed to
INIT_WORK(). Paul's ack below is for this RCU usage.
(Includes fixes by Alan Cox <alan@linux.intel.com>,
David L Stevens <dlstevens@us.ibm.com>,
Chris Wright <chrisw@redhat.com>)
Acked-by: Rusty Russell <rusty@rustcorp.com.au>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-01-14 13:17:27 +07:00
|
|
|
unifdef-y += vhost.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += videodev2.h
|
|
|
|
unifdef-y += videodev.h
|
2007-10-22 08:03:36 +07:00
|
|
|
unifdef-y += virtio_config.h
|
2009-09-30 16:17:21 +07:00
|
|
|
unifdef-y += virtio_ids.h
|
2007-10-22 08:03:38 +07:00
|
|
|
unifdef-y += virtio_blk.h
|
2007-10-22 08:03:37 +07:00
|
|
|
unifdef-y += virtio_net.h
|
2008-04-23 17:57:00 +07:00
|
|
|
unifdef-y += virtio_9p.h
|
|
|
|
unifdef-y += virtio_balloon.h
|
|
|
|
unifdef-y += virtio_console.h
|
|
|
|
unifdef-y += virtio_pci.h
|
|
|
|
unifdef-y += virtio_ring.h
|
2008-08-08 16:15:07 +07:00
|
|
|
unifdef-y += virtio_rng.h
|
2007-12-31 20:58:38 +07:00
|
|
|
unifdef-y += vt.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += wait.h
|
|
|
|
unifdef-y += wanrouter.h
|
|
|
|
unifdef-y += watchdog.h
|
2006-12-07 11:40:12 +07:00
|
|
|
unifdef-y += wireless.h
|
2007-02-10 16:46:24 +07:00
|
|
|
unifdef-y += xattr.h
|
2006-09-19 18:43:58 +07:00
|
|
|
unifdef-y += xfrm.h
|
2006-06-18 18:14:01 +07:00
|
|
|
|
2006-09-19 18:43:58 +07:00
|
|
|
objhdr-y += version.h
|
2008-12-21 07:57:59 +07:00
|
|
|
header-y += wimax.h
|
|
|
|
header-y += wimax/
|