Skip to content

Commit 2ba00f6

Browse files
authored
Merge pull request #156 from struct/tagging_fixes_docs
fix docs
2 parents 4f88102 + 4164a8f commit 2ba00f6

2 files changed

Lines changed: 4 additions & 0 deletions

File tree

MEMORY_TAGGING.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
IsoAlloc supports a software only memory tagging model that is very similar to Chromes [MTECheckedPtr](https://docs.google.com/document/d/1ph7iOorkGqTuETFZp-xvHV4L2rYootuz1ThzAAoGe30/edit?usp=sharing). This technique for pointer protection is inspired by ARM's upcoming Memory Tagging Extension (MTE) due in ARM v8.5-A. ARM MTE is a comprehensive hardware based solution for detecting memory safety issues in release builds of software with very little overhead. ARM MTE uses the Top Byte Ignore (TBI) feature to transparently tag pointers with metadata or a 'tag'. With ARM MTE this tag is mostly transparently checked and removed in hardware. The feature implemented here in IsoAlloc is conceptually very similar except that tagging and untagging of pointers happens in software.
44

5+
You can read more details about this feature [here](https://struct.github.io/pointer_tagging.html).
6+
57
Note that this feature is experimental, off by default, and the APIs are subject to change!
68

79
## Overview

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,8 @@ If all else fails please file an issue on the [github project](https://github.co
184184

185185
`void *iso_alloc_untag_ptr(void *p, iso_alloc_zone_handle *zone)` - Untags a pointer from a private zone if `MEMORY_TAGGING` is enabled.
186186

187+
`uint8_t iso_alloc_get_mem_tag(void *p, iso_alloc_zone_handle *zone)` - Retrieves the 1 byte tag for an untagged pointer if `MEMORY_TAGGING` is enabled.
188+
187189
`void iso_alloc_protect_root()` - Temporarily protects the `iso_alloc` root structure by marking it unreadable.
188190

189191
`void iso_alloc_unprotect_root()` - Undoes the operation performed by `iso_alloc_protect_root`.

0 commit comments

Comments
 (0)