)]}'
{
  "log": [
    {
      "commit": "628ff7c1d8d8466a5ad8078bd0206a130f8b8a51",
      "tree": "cc7ab0c90849be38e200fc6ff6a3a09e3caf0405",
      "parents": [
        "ed2617585f39dd12fae38c657bba68b9779ea10d"
      ],
      "author": {
        "name": "Roland Dreier",
        "email": "rdreier@cisco.com",
        "time": "Fri Dec 18 09:41:24 2009 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Dec 22 12:27:34 2009 -0500"
      },
      "message": "anonfd: Allow making anon files read-only\n\nIt seems a couple places such as arch/ia64/kernel/perfmon.c and\ndrivers/infiniband/core/uverbs_main.c could use anon_inode_getfile()\ninstead of a private pseudo-fs + alloc_file(), if only there were a way\nto get a read-only file.  So provide this by having anon_inode_getfile()\ncreate a read-only file if we pass O_RDONLY in flags.\n\nSigned-off-by: Roland Dreier \u003crolandd@cisco.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "610d18f4128ebbd88845d0fc60cce67b49af881e",
      "tree": "97faea373227afc42c4a8f932fb2fe3fd393a258",
      "parents": [
        "ef35ce231b3cb2a4b1808e826da263bf37ccb38a"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Wed Feb 18 14:48:18 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 18 15:37:53 2009 -0800"
      },
      "message": "timerfd: add flags check\n\nAs requested by Michael, add a missing check for valid flags in\ntimerfd_settime(), and make it return EINVAL in case some extra bits are\nset.\n\nMichael said:\nIf this is to be any use to userland apps that want to check flag\nsupport (perhaps it is too late already), then the sooner we get it\ninto the kernel the better: 2.6.29 would be good; earlier stables as\nwell would be even better.\n\n[akpm@linux-foundation.org: remove unused TFD_FLAGS_SET]\nAcked-by: Michael Kerrisk \u003cmtk.manpages@gmail.com\u003e\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.27.x, 2.6.28.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d4e82042c4cfa87a7d51710b71f568fe80132551",
      "tree": "202c311b52f4e4db9fbbbd80607744e2aa2e5885",
      "parents": [
        "836f92adf121f806e9beb5b6b88bd5c9c4ea3f24"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:14:34 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:31 2009 +0100"
      },
      "message": "[CVE-2009-0029] System call wrappers part 32\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "836f92adf121f806e9beb5b6b88bd5c9c4ea3f24",
      "tree": "0deccad6d01b7761a8d96cbc12b8e9541317380e",
      "parents": [
        "6559eed8ca7db0531a207cd80be5e28cd6f213c5"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:14:33 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:31 2009 +0100"
      },
      "message": "[CVE-2009-0029] System call wrappers part 31\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "76369470b7e5f97fc1a8af83c45b9ff739b08cb6",
      "tree": "19075ef47c947b15485a4832489a6d186e39ac85",
      "parents": [
        "beb20d52d03a51218827fb4a36a4b583debb03f9"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Mon Sep 01 15:00:14 2008 -0700"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Sep 05 21:35:09 2008 -0700"
      },
      "message": "hrtimer: convert timerfd to the new hrtimer apis\n\nIn order to be able to do range hrtimers we need to use accessor functions\nto the \"expire\" member of the hrtimer struct.\nThis patch converts timerfd to these accessors.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    },
    {
      "commit": "e38b36f325153eaadd1c2a7abc5762079233e540",
      "tree": "92cfc9855e41c5328d91456f5e373c00ecb8d383",
      "parents": [
        "510df2dd482496083e1c3b1a8c9b6afd5fa4c7d7"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Wed Jul 23 21:29:42 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:29 2008 -0700"
      },
      "message": "flag parameters: check magic constants\n\nThis patch adds test that ensure the boundary conditions for the various\nconstants introduced in the previous patches is met.  No code is generated.\n\n[akpm@linux-foundation.org: fix alpha]\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6b1ef0e60d42f2fdaec26baee8327eb156347b4f",
      "tree": "84f7e417f0c1f637ed10d42406276cff83849d69",
      "parents": [
        "e7d476dfdf0bcfed478a207aecfdc84f81efecaf"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Wed Jul 23 21:29:39 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:29 2008 -0700"
      },
      "message": "flag parameters: NONBLOCK in timerfd_create\n\nThis patch adds support for the TFD_NONBLOCK flag to timerfd_create.  The\nadditional changes needed are minimal.\n\nThe following test must be adjusted for architectures other than x86 and\nx86-64 and in case the syscall numbers changed.\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n#include \u003cfcntl.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003ctime.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003csys/syscall.h\u003e\n\n#ifndef __NR_timerfd_create\n# ifdef __x86_64__\n#  define __NR_timerfd_create 283\n# elif defined __i386__\n#  define __NR_timerfd_create 322\n# else\n#  error \"need __NR_timerfd_create\"\n# endif\n#endif\n\n#define TFD_NONBLOCK O_NONBLOCK\n\nint\nmain (void)\n{\n  int fd \u003d syscall (__NR_timerfd_create, CLOCK_REALTIME, 0);\n  if (fd \u003d\u003d -1)\n    {\n      puts (\"timerfd_create(0) failed\");\n      return 1;\n    }\n  int fl \u003d fcntl (fd, F_GETFL);\n  if (fl \u003d\u003d -1)\n    {\n      puts (\"fcntl failed\");\n      return 1;\n    }\n  if (fl \u0026 O_NONBLOCK)\n    {\n      puts (\"timerfd_create(0) set non-blocking mode\");\n      return 1;\n    }\n  close (fd);\n\n  fd \u003d syscall (__NR_timerfd_create, CLOCK_REALTIME, TFD_NONBLOCK);\n  if (fd \u003d\u003d -1)\n    {\n      puts (\"timerfd_create(TFD_NONBLOCK) failed\");\n      return 1;\n    }\n  fl \u003d fcntl (fd, F_GETFL);\n  if (fl \u003d\u003d -1)\n    {\n      puts (\"fcntl failed\");\n      return 1;\n    }\n  if ((fl \u0026 O_NONBLOCK) \u003d\u003d 0)\n    {\n      puts (\"timerfd_create(TFD_NONBLOCK) set non-blocking mode\");\n      return 1;\n    }\n  close (fd);\n\n  puts (\"OK\");\n\n  return 0;\n}\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "11fcb6c14676023d0bd437841f5dcd670e7990a0",
      "tree": "7b98614739715734d9cdd74f94982e110c953fc0",
      "parents": [
        "b087498eb5605673b0f260a7620d91818cd72304"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Wed Jul 23 21:29:26 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:27 2008 -0700"
      },
      "message": "flag parameters: timerfd_create\n\nThe timerfd_create syscall already has a flags parameter.  It just is\nunused so far.  This patch changes this by introducing the TFD_CLOEXEC\nflag to set the close-on-exec flag for the returned file descriptor.\n\nA new name TFD_CLOEXEC is introduced which in this implementation must\nhave the same value as O_CLOEXEC.\n\nThe following test must be adjusted for architectures other than x86 and\nx86-64 and in case the syscall numbers changed.\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n#include \u003cfcntl.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003ctime.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003csys/syscall.h\u003e\n\n#ifndef __NR_timerfd_create\n# ifdef __x86_64__\n#  define __NR_timerfd_create 283\n# elif defined __i386__\n#  define __NR_timerfd_create 322\n# else\n#  error \"need __NR_timerfd_create\"\n# endif\n#endif\n\n#define TFD_CLOEXEC O_CLOEXEC\n\nint\nmain (void)\n{\n  int fd \u003d syscall (__NR_timerfd_create, CLOCK_REALTIME, 0);\n  if (fd \u003d\u003d -1)\n    {\n      puts (\"timerfd_create(0) failed\");\n      return 1;\n    }\n  int coe \u003d fcntl (fd, F_GETFD);\n  if (coe \u003d\u003d -1)\n    {\n      puts (\"fcntl failed\");\n      return 1;\n    }\n  if (coe \u0026 FD_CLOEXEC)\n    {\n      puts (\"timerfd_create(0) set close-on-exec flag\");\n      return 1;\n    }\n  close (fd);\n\n  fd \u003d syscall (__NR_timerfd_create, CLOCK_REALTIME, TFD_CLOEXEC);\n  if (fd \u003d\u003d -1)\n    {\n      puts (\"timerfd_create(TFD_CLOEXEC) failed\");\n      return 1;\n    }\n  coe \u003d fcntl (fd, F_GETFD);\n  if (coe \u003d\u003d -1)\n    {\n      puts (\"fcntl failed\");\n      return 1;\n    }\n  if ((coe \u0026 FD_CLOEXEC) \u003d\u003d 0)\n    {\n      puts (\"timerfd_create(TFD_CLOEXEC) set close-on-exec flag\");\n      return 1;\n    }\n  close (fd);\n\n  puts (\"OK\");\n\n  return 0;\n}\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7d9dbca34240ebb6ff88d8a29c6c7bffd098f0c1",
      "tree": "7e3226a4d885f5e4444fbe01a08c51b0b33b2cc7",
      "parents": [
        "c019bbc612f6633ede7ed67725cbf68de45ae8a4"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Wed Jul 23 21:29:22 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:27 2008 -0700"
      },
      "message": "flag parameters: anon_inode_getfd extension\n\nThis patch just extends the anon_inode_getfd interface to take an additional\nparameter with a flag value.  The flag value is passed on to\nget_unused_fd_flags in anticipation for a use with the O_CLOEXEC flag.\n\nNo actual semantic changes here, the changed callers all pass 0 for now.\n\n[akpm@linux-foundation.org: KVM fix]\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nAcked-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2030a42cecd4dd1985a2ab03e25f3cd6106a5ca8",
      "tree": "7cb4710c3f7a4e034a20890f0df99bc42f9bbcee",
      "parents": [
        "9f3acc3140444a900ab280de942291959f0f615d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Feb 23 06:46:49 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 01 13:08:50 2008 -0400"
      },
      "message": "[PATCH] sanitize anon_inode_getfd()\n\na) none of the callers even looks at inode or file returned by anon_inode_getfd()\nb) any caller that would try to look at those would be racy, since by the time\nit returns we might have raced with close() from another thread and that\nfile would be pining for fjords.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "45cc2b96f20fa27088a650587e5d9dc5fa5e32c0",
      "tree": "a298360f7fd34c6fbb2d9156f0929cc59c36934e",
      "parents": [
        "f17a32e97eaa924754bf4463aee588a3890c7ae0"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Tue Apr 29 00:58:59 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:01 2008 -0700"
      },
      "message": "fs/timerfd.c should #include \u003clinux/syscalls.h\u003e\n\nEvery file should include the headers containing the prototypes for its global\nfunctions (in this case for sys_timerfd_*()).\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4d672e7ac79b5ec5cdc90e450823441e20464691",
      "tree": "66da3aa0bf7f7ac80376a93f17edbb2246b2df06",
      "parents": [
        "5e05ad7d4e3b11f935998882b5d9c3b257137f1b"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Mon Feb 04 22:27:26 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:07 2008 -0800"
      },
      "message": "timerfd: new timerfd API\n\nThis is the new timerfd API as it is implemented by the following patch:\n\nint timerfd_create(int clockid, int flags);\nint timerfd_settime(int ufd, int flags,\n\t\t    const struct itimerspec *utmr,\n\t\t    struct itimerspec *otmr);\nint timerfd_gettime(int ufd, struct itimerspec *otmr);\n\nThe timerfd_create() API creates an un-programmed timerfd fd.  The \"clockid\"\nparameter can be either CLOCK_MONOTONIC or CLOCK_REALTIME.\n\nThe timerfd_settime() API give new settings by the timerfd fd, by optionally\nretrieving the previous expiration time (in case the \"otmr\" parameter is not\nNULL).\n\nThe time value specified in \"utmr\" is absolute, if the TFD_TIMER_ABSTIME bit\nis set in the \"flags\" parameter.  Otherwise it\u0027s a relative time.\n\nThe timerfd_gettime() API returns the next expiration time of the timer, or\n{0, 0} if the timerfd has not been set yet.\n\nLike the previous timerfd API implementation, read(2) and poll(2) are\nsupported (with the same interface).  Here\u0027s a simple test program I used to\nexercise the new timerfd APIs:\n\nhttp://www.xmailserver.org/timerfd-test2.c\n\n[akpm@linux-foundation.org: coding-style cleanups]\n[akpm@linux-foundation.org: fix ia64 build]\n[akpm@linux-foundation.org: fix m68k build]\n[akpm@linux-foundation.org: fix mips build]\n[akpm@linux-foundation.org: fix alpha, arm, blackfin, cris, m68k, s390, sparc and sparc64 builds]\n[heiko.carstens@de.ibm.com: fix s390]\n[akpm@linux-foundation.org: fix powerpc build]\n[akpm@linux-foundation.org: fix sparc64 more]\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk-manpages@gmx.net\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk-manpages@gmx.net\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@gmail.com\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "098284020c47c1212d211e39ae2b41c21182e056",
      "tree": "f82e03b01a567a536f2f7b5c59671de2cf1f7dc2",
      "parents": [
        "a1cdd4a64f6ce15a1e81759ef99eed3a91f9acbe"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Thu Jul 26 10:41:07 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 26 11:35:17 2007 -0700"
      },
      "message": "make timerfd return a u64 and fix the __put_user\n\nDavi fixed a missing cast in the __put_user(), that was making timerfd\nreturn a single byte instead of the full value.\n\nTalking with Michael about the timerfd man page, we think it\u0027d be better to\nuse a u64 for the returned value, to align it with the eventfd\nimplementation.\n\nThis is an ABI change.  The timerfd code is new in 2.6.22 and if we merge this\ninto 2.6.23 then we should also merge it into 2.6.22.x.  That will leave a few\nearly 2.6.22 kernels out in the wild which might misbehave when a future\ntimerfd-enabled glibc is run on them.\n\nmtk says: The difference would be that read() will only return 4 bytes, while\nthe application will expect 8.  If the application is checking the size of\nreturned value, as it should, then it will be able to detect the problem (it\ncould even be sophisticated enough to know that if this is a 4-byte return,\nthen it is running on an old 2.6.22 kernel).  If the application is not\nchecking the return from read(), then its 8-byte buffer will not be filled --\nthe contents of the last 4 bytes will be undefined, so the u64 value as a\nwhole will be junk.\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Michael Kerrisk \u003cmtk-manpages@gmx.net\u003e\nCc: Davi Arnaut \u003cdavi@haxent.com.br\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "18963c01b8abf381f102752ce024c3582a716125",
      "tree": "6c7e594804608be82ec3988399e905e20d486f51",
      "parents": [
        "d48eb2331595224ffe89665e79721d44b40bb047"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Fri May 18 12:02:33 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 18 13:09:34 2007 -0700"
      },
      "message": "timerfd use waitqueue lock ...\n\nThe timerfd was using the unlocked waitqueue operations, but it was\nusing a different lock, so poll_wait() would race with it.\n\nThis makes timerfd directly use the waitqueue lock.\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b215e283992899650c4271e7385c79e26fb9a88e",
      "tree": "3f950814510422606821f1b0b373d65e4d9ed303",
      "parents": [
        "6d18c9220965b437287c3a7e803725c24992ceac"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Thu May 10 22:23:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 11 08:29:36 2007 -0700"
      },
      "message": "signal/timer/event: timerfd core\n\nThis patch introduces a new system call for timers events delivered though\nfile descriptors.  This allows timer event to be used with standard POSIX\npoll(2), select(2) and read(2).  As a consequence of supporting the Linux\nf_op-\u003epoll subsystem, they can be used with epoll(2) too.\n\nThe system call is defined as:\n\nint timerfd(int ufd, int clockid, int flags, const struct itimerspec *utmr);\n\nThe \"ufd\" parameter allows for re-use (re-programming) of an existing timerfd\nw/out going through the close/open cycle (same as signalfd).  If \"ufd\" is -1,\ns new file descriptor will be created, otherwise the existing \"ufd\" will be\nre-programmed.\n\nThe \"clockid\" parameter is either CLOCK_MONOTONIC or CLOCK_REALTIME.  The time\nspecified in the \"utmr-\u003eit_value\" parameter is the expiry time for the timer.\n\nIf the TFD_TIMER_ABSTIME flag is set in \"flags\", this is an absolute time,\notherwise it\u0027s a relative time.\n\nIf the time specified in the \"utmr-\u003eit_interval\" is not zero (.tv_sec \u003d\u003d 0,\ntv_nsec \u003d\u003d 0), this is the period at which the following ticks should be\ngenerated.\n\nThe \"utmr-\u003eit_interval\" should be set to zero if only one tick is requested.\nSetting the \"utmr-\u003eit_value\" to zero will disable the timer, or will create a\ntimerfd without the timer enabled.\n\nThe function returns the new (or same, in case \"ufd\" is a valid timerfd\ndescriptor) file, or -1 in case of error.\n\nAs stated before, the timerfd file descriptor supports poll(2), select(2) and\nepoll(2).  When a timer event happened on the timerfd, a POLLIN mask will be\nreturned.\n\nThe read(2) call can be used, and it will return a u32 variable holding the\nnumber of \"ticks\" that happened on the interface since the last call to\nread(2).  The read(2) call supportes the O_NONBLOCK flag too, and EAGAIN will\nbe returned if no ticks happened.\n\nA quick test program, shows timerfd working correctly on my amd64 box:\n\nhttp://www.xmailserver.org/timerfd-test.c\n\n[akpm@linux-foundation.org: add sys_timerfd to sys_ni.c]\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ]
}
