)]}'
{
  "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",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "79de99e32c35f91ad2fcebc0ab8513bc5fd612d7",
      "old_mode": 33188,
      "old_path": "arch/alpha/kernel/systbls.S",
      "new_id": "ba914af18c4f30cc60d915277a04c9865d68308c",
      "new_mode": 33188,
      "new_path": "arch/alpha/kernel/systbls.S"
    },
    {
      "type": "modify",
      "old_id": "cecf658e362514e56fc0a56084ece50da5d8a0d2",
      "old_mode": 33188,
      "old_path": "arch/arm/kernel/calls.S",
      "new_id": "283e14fff993dde1881b005aa6dbb1598e359780",
      "new_mode": 33188,
      "new_path": "arch/arm/kernel/calls.S"
    },
    {
      "type": "modify",
      "old_id": "56ff51bc8c21c8a761dc75f334b9a00f223754a4",
      "old_mode": 33188,
      "old_path": "arch/blackfin/mach-common/entry.S",
      "new_id": "fdd9bf43361edf9c31eae8fc19a5bdbdb2666b06",
      "new_mode": 33188,
      "new_path": "arch/blackfin/mach-common/entry.S"
    },
    {
      "type": "modify",
      "old_id": "ec62c951fa3cc37a1dd709609cd1a9bfa669ef1a",
      "old_mode": 33188,
      "old_path": "arch/cris/arch-v10/kernel/entry.S",
      "new_id": "d1361dc119e24d76b3042bd7b70fcb91bdde205a",
      "new_mode": 33188,
      "new_path": "arch/cris/arch-v10/kernel/entry.S"
    },
    {
      "type": "modify",
      "old_id": "c36f43c9460094cfa72f9f5f73839965481c53fa",
      "old_mode": 33188,
      "old_path": "arch/ia64/kernel/entry.S",
      "new_id": "f5d3efbfbeda425c8fbe1810f3cadf4dcd72bb9d",
      "new_mode": 33188,
      "new_path": "arch/ia64/kernel/entry.S"
    },
    {
      "type": "modify",
      "old_id": "918f5dbeaef6c32dcea4aba039298a93ca99b2be",
      "old_mode": 33188,
      "old_path": "arch/m68k/kernel/entry.S",
      "new_id": "6dfa3b3c0e2a737d0b128e33cc1e6965e1aa8d00",
      "new_mode": 33188,
      "new_path": "arch/m68k/kernel/entry.S"
    },
    {
      "type": "modify",
      "old_id": "9620093514bcb51533ce958bebd9156e45fd7318",
      "old_mode": 33188,
      "old_path": "arch/m68knommu/kernel/syscalltable.S",
      "new_id": "1b02b88200680c8ebbec377d4c67b56622bc1595",
      "new_mode": 33188,
      "new_path": "arch/m68knommu/kernel/syscalltable.S"
    },
    {
      "type": "modify",
      "old_id": "82480a1717d892eb6b07db692055c643851c0e44",
      "old_mode": 33188,
      "old_path": "arch/mips/kernel/scall32-o32.S",
      "new_id": "f798139e888e144943870740b20b9cb812ef0543",
      "new_mode": 33188,
      "new_path": "arch/mips/kernel/scall32-o32.S"
    },
    {
      "type": "modify",
      "old_id": "c2c10876da2e2a85d4ad9299111bddf004fb58f6",
      "old_mode": 33188,
      "old_path": "arch/mips/kernel/scall64-64.S",
      "new_id": "a626be6baea38e477ca76a444bb8326979cec1ae",
      "new_mode": 33188,
      "new_path": "arch/mips/kernel/scall64-64.S"
    },
    {
      "type": "modify",
      "old_id": "01993ec3368b5344caabcca54f8b1bc75e7641bc",
      "old_mode": 33188,
      "old_path": "arch/mips/kernel/scall64-n32.S",
      "new_id": "9d5bcaf1b3890e35ba92a1ccbba03d2ec42f41ea",
      "new_mode": 33188,
      "new_path": "arch/mips/kernel/scall64-n32.S"
    },
    {
      "type": "modify",
      "old_id": "dd68afce7da5782dc0f59766b04eb3afcb7eb647",
      "old_mode": 33188,
      "old_path": "arch/mips/kernel/scall64-o32.S",
      "new_id": "fd2019c1ec2d65e9a9532ece52a60828025090bf",
      "new_mode": 33188,
      "new_path": "arch/mips/kernel/scall64-o32.S"
    },
    {
      "type": "modify",
      "old_id": "6ee1bedbd1bf85f020edfcf9b2c37457208ba1b7",
      "old_mode": 33188,
      "old_path": "arch/s390/kernel/compat_wrapper.S",
      "new_id": "062c3d4c0394b48f4e8bbea8306bc538a03c2758",
      "new_mode": 33188,
      "new_path": "arch/s390/kernel/compat_wrapper.S"
    },
    {
      "type": "modify",
      "old_id": "9e26ed9fe4e73ee5301519ada6c2a602efdef2b6",
      "old_mode": 33188,
      "old_path": "arch/s390/kernel/syscalls.S",
      "new_id": "25eac7802fc4dba21980e643fc6fc2f0b76081bf",
      "new_mode": 33188,
      "new_path": "arch/s390/kernel/syscalls.S"
    },
    {
      "type": "modify",
      "old_id": "55722840859c89c15df7dc32409cdd902fb7c376",
      "old_mode": 33188,
      "old_path": "arch/sparc/kernel/systbls.S",
      "new_id": "ee010f4532a0dd3979b764b99f0b775f795f61d3",
      "new_mode": 33188,
      "new_path": "arch/sparc/kernel/systbls.S"
    },
    {
      "type": "modify",
      "old_id": "06d10907d8cee77ed3111a2b87a2a5c6e0bd98cb",
      "old_mode": 33188,
      "old_path": "arch/sparc64/kernel/systbls.S",
      "new_id": "b8058906e7271dc3b593d42c299d638138ea987c",
      "new_mode": 33188,
      "new_path": "arch/sparc64/kernel/systbls.S"
    },
    {
      "type": "modify",
      "old_id": "5216c3fd751771ab4349753f68395b6daba74063",
      "old_mode": 33188,
      "old_path": "fs/compat.c",
      "new_id": "69baca5ad6089d3303ef5839e35c51b3f4a07ef9",
      "new_mode": 33188,
      "new_path": "fs/compat.c"
    },
    {
      "type": "modify",
      "old_id": "61983f3b107c5ee5d12521d3f38255a77bc6f781",
      "old_mode": 33188,
      "old_path": "fs/timerfd.c",
      "new_id": "10c80b59ec4bb7e542b8864f369ec10da7dc34f5",
      "new_mode": 33188,
      "new_path": "fs/timerfd.c"
    },
    {
      "type": "modify",
      "old_id": "0c8b0d6791399aa45605e0b3024f97f0511d649c",
      "old_mode": 33188,
      "old_path": "include/asm-powerpc/systbl.h",
      "new_id": "e996521fb3a686d09f128db627e2bd1d370428b9",
      "new_mode": 33188,
      "new_path": "include/asm-powerpc/systbl.h"
    },
    {
      "type": "modify",
      "old_id": "d38655f2be7088e3bce8d63476ec525fdf347511",
      "old_mode": 33188,
      "old_path": "include/linux/compat.h",
      "new_id": "ae0a483bef9bd8a004c2058da2e828d2a0d8b7b5",
      "new_mode": 33188,
      "new_path": "include/linux/compat.h"
    },
    {
      "type": "modify",
      "old_id": "3fed27c88c0134d66df6d4fc80da2a4537d1cd08",
      "old_mode": 33188,
      "old_path": "include/linux/hrtimer.h",
      "new_id": "8371b664b41f44314dbc5a6a2fae4e2d0953414c",
      "new_mode": 33188,
      "new_path": "include/linux/hrtimer.h"
    },
    {
      "type": "modify",
      "old_id": "61def7c8fbb3c750677458d1d4e8a4f347e5beac",
      "old_mode": 33188,
      "old_path": "include/linux/syscalls.h",
      "new_id": "4c2577bd1c859c332821b2be75a378010d258c46",
      "new_mode": 33188,
      "new_path": "include/linux/syscalls.h"
    },
    {
      "type": "modify",
      "old_id": "1069998fe25fdcce1af97f7be831852d85b6d20b",
      "old_mode": 33188,
      "old_path": "kernel/hrtimer.c",
      "new_id": "668f3967eb394e37fcecc65e47e6dce75173b5dc",
      "new_mode": 33188,
      "new_path": "kernel/hrtimer.c"
    },
    {
      "type": "modify",
      "old_id": "36d563fd9e3b40d78f778f2bc46f339380daa6c3",
      "old_mode": 33188,
      "old_path": "kernel/posix-timers.c",
      "new_id": "122d5c787fe2fc7300deeb153fec9a1d3835cd34",
      "new_mode": 33188,
      "new_path": "kernel/posix-timers.c"
    },
    {
      "type": "modify",
      "old_id": "beee5b3b68a284a2e2b3fd2c2a3d9578d0e03bb7",
      "old_mode": 33188,
      "old_path": "kernel/sys_ni.c",
      "new_id": "5b9b467de070e2b50e0e2da7b09aaacfd6cc417e",
      "new_mode": 33188,
      "new_path": "kernel/sys_ni.c"
    }
  ]
}
