)]}'
{
  "commit": "31c1981616c2f93a1db97a13eb409fa8e9837970",
  "tree": "ff13307f6694055b586908edbea64bb750c06f6f",
  "parents": [
    "03668bef2e7fe7de8c7912ee9527e1db1573c4ac"
  ],
  "author": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Tue Mar 03 14:36:41 2020 -0500"
  },
  "committer": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Wed Apr 01 18:27:54 2020 -0400"
  },
  "message": "parlib: add a helper for \"notify debugging\"\n\nNotification events carry payloads, unlike signals which are just a\nbit per interrupt.  During debugging, I\u0027ll often hook up a handler to\nthe debug event EV_FREE_APPLE_PIE (9), and poke it from the shell with:\n\n\t$ notify PID 9 arg1 arg2\n\nThis commit adds a helper for hooking an event handler to event 9.  Note\nyou need a ev_mbox type that can handle a payload (e.g. a UCQ, but not a\nbitmap) if you want to receive the actual arguments.\n\nYou can, of course, hook in to any event you\u0027d like.  \u00279\u0027 is typically\nfree.  You can also do similar things with signals, but once you want to\ndo more than one thing with a command (like print different debug info,\nor set different flags), you\u0027ll want the full capabilities of a\nnotification event.\n\nSigned-off-by: Barret Rhoden \u003cbrho@cs.berkeley.edu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4b985a1777cc33e242c61e511ae76ac21cacb04f",
      "old_mode": 33188,
      "old_path": "user/parlib/include/parlib/parlib.h",
      "new_id": "d7c072750f3552a1969bd8675c4d7a5e4aed8b24",
      "new_mode": 33188,
      "new_path": "user/parlib/include/parlib/parlib.h"
    },
    {
      "type": "modify",
      "old_id": "4f06efe8001d954fbd78c124c0b921ce29b913c7",
      "old_mode": 33188,
      "old_path": "user/parlib/parlib.c",
      "new_id": "33bead9a1793b12f1ea419ea954f6d4fdae898d0",
      "new_mode": 33188,
      "new_path": "user/parlib/parlib.c"
    }
  ]
}
