)]}'
{
  "commit": "0056a8d841369e55ce82342d6fc415e48d25adaa",
  "tree": "6151f72b1a0c39be058bf18ebcf9befdd82e0a48",
  "parents": [
    "80d454f9dd6c77fe59c8c16a4d08a6e36a056e3e"
  ],
  "author": {
    "name": "Joseph Huber",
    "email": "jhuber6@vols.utk.edu",
    "time": "Tue Apr 25 21:34:59 2023 -0500"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Wed Apr 26 14:56:18 2023 -0700"
  },
  "message": "[libc] Partially implement `atexit` on the GPU\n\nThe `atexit` function controls registering functions to call at the end\nof the program. This is difficult to do in general on the GPU because of\nthe lack of a real mutex implementation. We primarily provide this for\ntesting where we can explicitly restrict how the `atexit` registration\nfunctions are called. So we simply create a passthrough Mutex to get\npast the usage of it as per @sivachandra\u0027s suggestion.\n\nDepends on D149225\n\nReviewed By: sivachandra\n\nDifferential Revision: https://reviews.llvm.org/D149226\n\nGitOrigin-RevId: dc9baac1a0148ce0c2b8afdc75e3e208597f79c9\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9036bbc89238e22d97c01731dc090025afc7eb00",
      "old_mode": 33188,
      "old_path": "config/gpu/api.td",
      "new_id": "3e6927de9463437ad4f6033366232c4138fb8110",
      "new_mode": 33188,
      "new_path": "config/gpu/api.td"
    },
    {
      "type": "modify",
      "old_id": "d42a554577e63cf1e2a6c991af8036c8cb384a7a",
      "old_mode": 33188,
      "old_path": "config/gpu/entrypoints.txt",
      "new_id": "c5ed1e3dd4764193876e60006e0b9dabcee3f6a5",
      "new_mode": 33188,
      "new_path": "config/gpu/entrypoints.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ea89feb0c5c68c16549563cca266b77e0ddd2081",
      "new_mode": 33188,
      "new_path": "src/__support/threads/gpu/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c4a75907eed7c706e88cb1ca73086109948c5499",
      "new_mode": 33188,
      "new_path": "src/__support/threads/gpu/mutex.h"
    },
    {
      "type": "modify",
      "old_id": "1015333b677a9ee891a87494ddbfb55893997a75",
      "old_mode": 33188,
      "old_path": "src/__support/threads/mutex.h",
      "new_id": "3c2291d8f41fd1aeb8c2d73d100be10280437c24",
      "new_mode": 33188,
      "new_path": "src/__support/threads/mutex.h"
    }
  ]
}
