)]}'
{
  "commit": "a5c61a0f5d9e210baa79245d81d4f5a27d4ea733",
  "tree": "d49b56c2aded1d929d40d0144a5981ec685c41be",
  "parents": [
    "fef71911c87355acec15e8f7da2d6ba64ff6240c"
  ],
  "author": {
    "name": "Boqun Feng",
    "email": "boqun.feng@gmail.com",
    "time": "Wed Jun 18 09:49:33 2025 -0700"
  },
  "committer": {
    "name": "Boqun Feng",
    "email": "boqun.feng@gmail.com",
    "time": "Thu Jul 17 09:48:07 2025 -0700"
  },
  "message": "WIP: rust: sync: atomic: Add Atomic\u003c*mut T\u003e\n\nAdd atomic support for raw pointer values, similar to `isize` and\n`usize`, the representation type is selected based on CONFIG_64BIT.\n\n`*mut T` is not `Send`, however `Atomic\u003c*mut T\u003e` definitely needs to be\na `Sync`, and that\u0027s the whole point of atomics: being able to have\nmultiple shared references in different threads so that they can sync\nwith each other. As a result, a pointer value will be transferred from\none thread to another via `Atomic\u003c*mut T\u003e`:\n\n\t\u003cthread 1\u003e\t\t\u003cthread 2\u003e\n\tx.store(p1, Relaxed);\n\t\t\t\tlet p \u003d x.load(p1, Relaxed);\n\nThis means a raw pointer value (`*mut T`) needs to be able to transfer\nacross thread boundaries, which is essentially `Send`.\n\nTo reflect this in the type system, and based on the fact that pointer\nvalues can be transferred safely (only using them to dereference is\nunsafe), as suggested by Alice, extend the `AllowAtomic` trait to\ninclude a customized `Send` semantics, that is: `impl AllowAtomic` has\nto be safe to be transferred across thread boundaries.\n\nSuggested-by: Alice Ryhl \u003caliceryhl@google.com\u003e\nReviewed-by: Alice Ryhl \u003caliceryhl@google.com\u003e\nSigned-off-by: Boqun Feng \u003cboqun.feng@gmail.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0db3047ddc435ec986808bdd1cc07e600226bf07",
      "old_mode": 33188,
      "old_path": "rust/kernel/sync/atomic.rs",
      "new_id": "e4e7c546f387d86ef3f94806239c262fa35143c9",
      "new_mode": 33188,
      "new_path": "rust/kernel/sync/atomic.rs"
    },
    {
      "type": "modify",
      "old_id": "383d46e5d44a1033bcff2811e72491d5918670d5",
      "old_mode": 33188,
      "old_path": "rust/kernel/sync/atomic/generic.rs",
      "new_id": "65358c41dcdc3d881da255902b36cc83b8d83c8e",
      "new_mode": 33188,
      "new_path": "rust/kernel/sync/atomic/generic.rs"
    }
  ]
}
