Searched refs:xa_state (Results 1 – 9 of 9) sorted by relevance
/linux/Documentation/translations/zh_CN/core-api/ |
A D | xarray.rst | 255 高级API是基于xa_state的。这是一个不透明的数据结构,你使用XA_STATE()宏在堆栈中声明。这个宏初始化了 256 xa_state,准备开始在XArray上移动。它被用作一个游标来保持在XArray中的位置,并让你把各种操作组合在一 260 会检查xa_state是否处于错误状态,所以你没有必要在每次调用之后检查错误;你可以连续进行多次调用,只在 265 存在xa_state中供下一次尝试。这个想法是,你拿着xa_lock,尝试操作,然后放弃锁。该操作试图在持有锁的情 285 - 一个XArray节点。 在使用多索引xa_state时可能是可见的。 307 xa_state中设置ENOMEM。 313 xas_load()会尽可能地将xa_state移动到该条目附近。如果你知道xa_state已经移动到了该条目,并且需要检查 321 一个条目,那么它将找到当前引用的条目之后的下一个条目。如果没有,它将返回xa_state索引处的条目。使用 325 xas_find_marked()函数也是如此。如果xa_state没有被移动过,它将返回xa_state的索引处的条目,如果它 330 xas_pause()函数的存在就是为了这个目的。在你完成了必要的工作并希望恢复后,xa_state处于适当的状态,在 [all …]
|
/linux/include/linux/ |
A D | xarray.h | 1310 struct xa_state { struct 1365 struct xa_state name = __XA_STATE(array, \ 1496 void *xas_load(struct xa_state *); 1497 void *xas_store(struct xa_state *, void *entry); 1499 void *xas_find_conflict(struct xa_state *); 1505 void xas_init_marks(const struct xa_state *); 1507 bool xas_nomem(struct xa_state *, gfp_t); 1508 void xas_pause(struct xa_state *); 1510 void xas_create_range(struct xa_state *); 1764 void *__xas_next(struct xa_state *); [all …]
|
/linux/lib/ |
A D | xarray.c | 160 static void xas_advance(struct xa_state *xas) in xas_advance() 166 static void *set_bounds(struct xa_state *xas) in set_bounds() 179 static void *xas_start(struct xa_state *xas) in xas_start() 231 void *xas_load(struct xa_state *xas) in xas_load() 267 static void xas_destroy(struct xa_state *xas) in xas_destroy() 436 static void xas_shrink(struct xa_state *xas) in xas_shrink() 703 void xas_create_range(struct xa_state *xas) in xas_create_range() 1115 void xas_pause(struct xa_state *xas) in xas_pause() 1145 void *__xas_prev(struct xa_state *xas) in __xas_prev() 1184 void *__xas_next(struct xa_state *xas) in __xas_next() [all …]
|
/linux/arch/arm64/mm/ |
A D | mteswap.c | 84 XA_STATE(xa_state, &mte_pages, entry.val); in mte_invalidate_tags_area() 87 xas_for_each(&xa_state, tags, last_entry.val - 1) { in mte_invalidate_tags_area() 88 __xa_erase(&mte_pages, xa_state.xa_index); in mte_invalidate_tags_area()
|
/linux/arch/arm64/kernel/ |
A D | hibernate.c | 248 XA_STATE(xa_state, &mte_pages, 0); in swsusp_mte_free_storage() 252 xas_for_each(&xa_state, tags, ULONG_MAX) { in swsusp_mte_free_storage() 298 XA_STATE(xa_state, &mte_pages, 0); in swsusp_mte_restore_tags() 303 xas_for_each(&xa_state, tags, ULONG_MAX) { in swsusp_mte_restore_tags() 304 unsigned long pfn = xa_state.xa_index; in swsusp_mte_restore_tags()
|
/linux/fs/ |
A D | dax.c | 157 static wait_queue_head_t *dax_entry_waitqueue(struct xa_state *xas, in dax_entry_waitqueue() 195 static void dax_wake_entry(struct xa_state *xas, void *entry, in dax_wake_entry() 223 static void *get_unlocked_entry(struct xa_state *xas, unsigned int order) in get_unlocked_entry() 257 static void wait_entry_unlocked(struct xa_state *xas, void *entry) in wait_entry_unlocked() 278 static void put_unlocked_entry(struct xa_state *xas, void *entry, in put_unlocked_entry() 290 static void dax_unlock_entry(struct xa_state *xas, void *entry) in dax_unlock_entry() 306 static void *dax_lock_entry(struct xa_state *xas, void *entry) in dax_lock_entry() 487 static void *grab_mapping_entry(struct xa_state *xas, in grab_mapping_entry() 744 static void *dax_insert_entry(struct xa_state *xas, in dax_insert_entry() 1052 static vm_fault_t dax_load_hole(struct xa_state *xas, in dax_load_hole() [all …]
|
/linux/Documentation/core-api/ |
A D | xarray.rst | 319 macro. This macro initialises the xa_state ready to start walking 324 The xa_state is also used to store errors. You can call 333 If the xa_state is holding an ``ENOMEM`` error, calling xas_nomem() 400 The xas_load() will walk the xa_state as close to the entry 401 as it can. If you know the xa_state has already been walked to the 417 entry at the index of the xa_state. Using xas_next_entry() to 422 The xas_find_marked() function is similar. If the xa_state has 425 the entry referenced by the xa_state. The xas_next_marked() 462 Calling xas_load() with a multi-index xa_state will walk the 471 in the xa_state will not be changed. When iterating over an XArray [all …]
|
/linux/mm/ |
A D | memfd.c | 31 static void memfd_tag_pins(struct xa_state *xas) in memfd_tag_pins()
|
A D | filemap.c | 1982 static inline struct page *find_get_entry(struct xa_state *xas, pgoff_t max, in find_get_entry() 2796 static inline loff_t page_seek_hole_data(struct xa_state *xas, in page_seek_hole_data() 2829 unsigned int seek_page_size(struct xa_state *xas, struct page *page) in seek_page_size() 3236 struct xa_state *xas, pgoff_t end_pgoff) in next_uptodate_page() 3276 struct xa_state *xas, in first_map_page() 3284 struct xa_state *xas, in next_map_page()
|
Completed in 25 milliseconds