)]}'
{
  "commit": "a4708521d495ae3c9086a38e6241aa984953f684",
  "tree": "65baa305fcb45d623b6437376d16590430997807",
  "parents": [
    "04266733eeeabe6b03ca4f3fa39a256f8c59249b"
  ],
  "author": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Wed Oct 02 12:52:10 2019 -0400"
  },
  "committer": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Tue Oct 08 17:11:11 2019 -0400"
  },
  "message": "arena: allow \"self-sourced\" arenas\n\nThese arenas generate their own resources dynamically and arbitrarily.\nThey do not source from another arena, such as base, but they also are\nnot given their segments in advance with arena_add().  Instead, they\ncreate resources when asked.\n\nIt is similar to calling arena_add() in response to a failed allocation,\nexcept the allocation never fails.\n\nThe arena alloc function pointer lets you do whatever you want.  The\nreason for self-sourcing instead of pulling from a dummy arena is that\nthe self-source provides a pointer to the arena in the allocation\nfunction.  With that pointer, you now have your original arena, which\ncould be embedded in another structure.\n\nSigned-off-by: Barret Rhoden \u003cbrho@cs.berkeley.edu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5379c5070e064b6c5209fb6ef6f877329ee7d95c",
      "old_mode": 33188,
      "old_path": "kern/drivers/dev/mem.c",
      "new_id": "36b9856a55462a5917c2b2a878257cf073b8b6a3",
      "new_mode": 33188,
      "new_path": "kern/drivers/dev/mem.c"
    },
    {
      "type": "modify",
      "old_id": "a6e64d5e7d7d331cfebcb131e8c1efa1d50d1869",
      "old_mode": 33188,
      "old_path": "kern/include/arena.h",
      "new_id": "0f49c74ee0b8f4d33910413ff20b25e147509c20",
      "new_mode": 33188,
      "new_path": "kern/include/arena.h"
    },
    {
      "type": "modify",
      "old_id": "cbf17119fb292104af8a0fccd32172afedbe33d5",
      "old_mode": 33188,
      "old_path": "kern/src/arena.c",
      "new_id": "6f6e400f4b074f66ee59ffb35bebb70369382556",
      "new_mode": 33188,
      "new_path": "kern/src/arena.c"
    },
    {
      "type": "modify",
      "old_id": "29c39780d3bad1311525cdc1b7ef184e5b7ffd02",
      "old_mode": 33188,
      "old_path": "kern/src/ktest/kt_arena.c",
      "new_id": "0b0be7f330e3924b54c21ef3ebba46cfb1e6b083",
      "new_mode": 33188,
      "new_path": "kern/src/ktest/kt_arena.c"
    }
  ]
}
