)]}'
{
  "commit": "80eabffc10a755f8e1817b639297d255e0246f5d",
  "tree": "b16734cd0bd3ab2ea7996223a51359d85f043352",
  "parents": [
    "d16256e626ec0064ce95bfb4b817de099db942c4"
  ],
  "author": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Tue Jun 09 12:59:11 2020 -0400"
  },
  "committer": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Tue Jun 09 13:10:41 2020 -0400"
  },
  "message": "tests/lock_test: add a linux kernel module for MCS locks\n\nThis uses the in-kernel \"queue\" locks, which are basically special MCS\nlocks.  The test runs in the kernel, and we extract the information to\nuserspace for processing, using the same commands and analysis as for\nuser-space spinlocks.\n\nRight now, there\u0027s only the one kernel lock.  We could add more, like\nregular spinlocks and whatnot.  That way, you\u0027d be able to test a\nvariety of spinlocks, with the low-interference you\u0027d expect from\nrunning inside the kernel (irqs disabled, no resched while holding\nlocks, etc).\n\nOne reason to add other locks would be to test *our own* locks, instead\nof Linux\u0027s locks.  In that sense, the module would be a platform for\nbenchmarking lock performance, generally.  Versus just testing Linux\nimplementations.   Especially since, from early numbers, our Linux\nuserspace MCS locks (which are basically the ones we coded for Akaros)\nare better than the in-kernel MCS locks (queue_lock()).\n\nTo build this, you\u0027ll need to set up your LINUX_KDIR variable, but also\nhack the source to export a symbol.  Oh well.  You\u0027ll also need to be\nrunning that kernel.  You should be able to hack this up for a running\nmachine.  (e.g. cat the symtab, find the function, cast that arbitrary\nnumber to a function pointer, and cross your fingers).\n\nSigned-off-by: Barret Rhoden \u003cbrho@cs.berkeley.edu\u003e\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "39d07fed4014f3429003f759ca1fdb9df939132e",
      "new_mode": 33188,
      "new_path": "tests/linux/modules/mcs.c"
    },
    {
      "type": "modify",
      "old_id": "c2bd6ba50a185e56d0e06ab599fa0dda97e77fa0",
      "old_mode": 33188,
      "old_path": "tests/lock_test.c",
      "new_id": "0dbab609b9c35d7982a04c23082f07f89b2793ee",
      "new_mode": 33188,
      "new_path": "tests/lock_test.c"
    }
  ]
}
