)]}'
{
  "commit": "10ed6be686450b6d96451e0f7e484f7c54f96e7c",
  "tree": "bff9e203e01731dd6caa0b8d3ee8488e237790a1",
  "parents": [
    "cb1b906e444a790e51af3089506c105177b31e22"
  ],
  "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": "Wed Jul 09 22:33:21 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": "e1e40757d7b5582b6f3ddc992227ae41d17bfa0f",
      "old_mode": 33188,
      "old_path": "rust/kernel/sync/atomic.rs",
      "new_id": "7ff87b2b49d68099f4bb3b66ece384d34201c40c",
      "new_mode": 33188,
      "new_path": "rust/kernel/sync/atomic.rs"
    },
    {
      "type": "modify",
      "old_id": "412a2c811c3d7afaf980da5c3e0b52a6dd95e22e",
      "old_mode": 33188,
      "old_path": "rust/kernel/sync/atomic/generic.rs",
      "new_id": "237fcec7666e4107c8d599ad7eb07163ac47fd8a",
      "new_mode": 33188,
      "new_path": "rust/kernel/sync/atomic/generic.rs"
    }
  ]
}
