)]}'
{
  "commit": "3cfc348bf90ffaa777c188652aa297f04eb94de8",
  "tree": "8908d6a5a61e54ab422ec7f4800d6ac591695423",
  "parents": [
    "c08c820508233b424deab3302bc404bbecc6493a"
  ],
  "author": {
    "name": "Andi Kleen",
    "email": "ak@suse.de",
    "time": "Tue Sep 26 10:52:28 2006 +0200"
  },
  "committer": {
    "name": "Andi Kleen",
    "email": "andi@basil.nowhere.org",
    "time": "Tue Sep 26 10:52:28 2006 +0200"
  },
  "message": "[PATCH] x86: Add portable getcpu call\n\nFor NUMA optimization and some other algorithms it is useful to have a fast\nto get the current CPU and node numbers in user space.\n\nx86-64 added a fast way to do this in a vsyscall. This adds a generic\nsyscall for other architectures to make it a generic portable facility.\n\nI expect some of them will also implement it as a faster vsyscall.\n\nThe cache is an optimization for the x86-64 vsyscall optimization. Since\nwhat the syscall returns is an approximation anyways and user space\noften wants very fast results it can be cached for some time.  The norma\nmethods to get this information in user space are relatively slow\n\nThe vsyscall is in a better position to manage the cache because it has direct\naccess to a fast time stamp (jiffies). For the generic syscall optimization\nit doesn\u0027t help much, but enforce a valid argument to keep programs\nportable\n\nI only added an i386 syscall entry for now. Other architectures can follow\nas needed.\n\nAK: Also added some cleanups from Andrew Morton\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "dd63d4775398a301341063458a19d1a24e202279",
      "old_mode": 33188,
      "old_path": "arch/i386/kernel/syscall_table.S",
      "new_id": "7e639f78b0b9f274ea055ef42275506b262a769c",
      "new_mode": 33188,
      "new_path": "arch/i386/kernel/syscall_table.S"
    },
    {
      "type": "modify",
      "old_id": "30ed0f6f4a2beb90dfdde65f9761a86dbb90b1bf",
      "old_mode": 33188,
      "old_path": "arch/x86_64/ia32/ia32entry.S",
      "new_id": "32fd32bea07c6e579baec44ddee5a6a6d7021f92",
      "new_mode": 33188,
      "new_path": "arch/x86_64/ia32/ia32entry.S"
    },
    {
      "type": "modify",
      "old_id": "fc1c8ddae149830a0442e8e9cb7609068c0792cb",
      "old_mode": 33188,
      "old_path": "include/asm-i386/unistd.h",
      "new_id": "565d0897b2053d274f279f6bb2d4d2b614a92670",
      "new_mode": 33188,
      "new_path": "include/asm-i386/unistd.h"
    },
    {
      "type": "modify",
      "old_id": "008f04c5673715b33a52536e2bd4375bc064ff92",
      "old_mode": 33188,
      "old_path": "include/linux/syscalls.h",
      "new_id": "3f0f716225ecd714d1c21fac4076e6ef6fbbce12",
      "new_mode": 33188,
      "new_path": "include/linux/syscalls.h"
    },
    {
      "type": "modify",
      "old_id": "e236f98f7ec5d5460fa5eda7d97155bfb712df61",
      "old_mode": 33188,
      "old_path": "kernel/sys.c",
      "new_id": "3f894775488dd7fb62907d149d0d1959b67de049",
      "new_mode": 33188,
      "new_path": "kernel/sys.c"
    }
  ]
}
