Home
last modified time | relevance | path

Searched refs:xa_state (Results 1 – 12 of 12) sorted by relevance

/openbmc/linux/Documentation/translations/zh_CN/core-api/
H A Dxarray.rst256 高级API是基于xa_state的。这是一个不透明的数据结构,你使用XA_STATE()宏在堆栈中声明。这个宏初始化了
257 xa_state,准备开始在XArray上移动。它被用作一个游标来保持在XArray中的位置,并让你把各种操作组合在一
258 起,而不必每次都从头开始。xa_state的内容受rcu_read_lock()或xas_lock()的保护。如果需要删除保护状态
261 xa_state也被用来存储错误(store errors)。你可以调用xas_error()来检索错误。所有的操作在进行之前都
262 会检查xa_state是否处于错误状态,所以你没有必要在每次调用之后检查错误;你可以连续进行多次调用,只在
266 如果xa_state持有 ``ENOMEM`` 错误,调用xas_nomem()将尝试使用指定的gfp标志分配更多的内存,并将其缓
267 存在xa_state中供下一次尝试。这个想法是,你拿着xa_lock,尝试操作,然后放弃锁。该操作试图在持有锁的情
287 - 一个XArray节点。 在使用多索引xa_state时可能是可见的。
309 xa_state中设置ENOMEM。
315 xas_load()会尽可能地将xa_state移动到该条目附近。如果你知道xa_state已经移动到了该条目,并且需要检查
[all …]
/openbmc/linux/include/linux/
H A Dxarray.h1344 struct xa_state { struct
1387 struct xa_state name = __XA_STATE(array, index, 0, 0)
1401 struct xa_state name = __XA_STATE(array, \
1425 static inline int xas_error(const struct xa_state *xas) in xas_error()
1439 static inline void xas_set_err(struct xa_state *xas, long err) in xas_set_err()
1450 static inline bool xas_invalid(const struct xa_state *xas) in xas_invalid()
1461 static inline bool xas_valid(const struct xa_state *xas) in xas_valid()
1472 static inline bool xas_is_node(const struct xa_state *xas) in xas_is_node()
1505 static inline void xas_reset(struct xa_state *xas) in xas_reset()
1522 static inline bool xas_retry(struct xa_state *xas, const void *entry) in xas_retry()
[all …]
/openbmc/linux/lib/
H A Dxarray.c38 static inline void xas_lock_type(struct xa_state *xas, unsigned int lock_type) in xas_lock_type()
48 static inline void xas_unlock_type(struct xa_state *xas, unsigned int lock_type) in xas_unlock_type()
126 static void xas_squash_marks(const struct xa_state *xas) in xas_squash_marks()
149 static void xas_set_offset(struct xa_state *xas) in xas_set_offset()
155 static void xas_move_index(struct xa_state *xas, unsigned long offset) in xas_move_index()
162 static void xas_next_offset(struct xa_state *xas) in xas_next_offset()
168 static void *set_bounds(struct xa_state *xas) in set_bounds()
181 static void *xas_start(struct xa_state *xas) in xas_start()
203 static void *xas_descend(struct xa_state *xas, struct xa_node *node) in xas_descend()
235 void *xas_load(struct xa_state *xas) in xas_load()
[all …]
/openbmc/linux/arch/arm64/mm/
H A Dmteswap.c77 XA_STATE(xa_state, &mte_pages, entry.val); in mte_invalidate_tags_area()
80 xas_for_each(&xa_state, tags, last_entry.val - 1) { in mte_invalidate_tags_area()
81 __xa_erase(&mte_pages, xa_state.xa_index); in mte_invalidate_tags_area()
/openbmc/linux/arch/arm64/kernel/
H A Dhibernate.c243 XA_STATE(xa_state, &mte_pages, 0); in swsusp_mte_free_storage()
247 xas_for_each(&xa_state, tags, ULONG_MAX) { in swsusp_mte_free_storage()
293 XA_STATE(xa_state, &mte_pages, 0); in swsusp_mte_restore_tags()
298 xas_for_each(&xa_state, tags, ULONG_MAX) { in swsusp_mte_restore_tags()
299 unsigned long pfn = xa_state.xa_index; in swsusp_mte_restore_tags()
/openbmc/linux/Documentation/core-api/
H A Dxarray.rst317 The advanced API is based around the xa_state. This is an opaque data
319 This macro initialises the xa_state ready to start walking around the
322 from the top every time. The contents of the xa_state are protected by
328 The xa_state is also used to store errors. You can call
330 the xa_state is in an error state before proceeding, so there's no need
337 If the xa_state is holding an ``ENOMEM`` error, calling xas_nomem()
339 cache it in the xa_state for the next attempt. The idea is that you take
366 - An XArray node. May be visible when using a multi-index xa_state.
394 to store every entry in a range. It will set ENOMEM in the xa_state if
404 The xas_load() will walk the xa_state as close to the entry
[all …]
/openbmc/linux/fs/
H A Ddax.c143 static wait_queue_head_t *dax_entry_waitqueue(struct xa_state *xas, in dax_entry_waitqueue()
181 static void dax_wake_entry(struct xa_state *xas, void *entry, in dax_wake_entry()
209 static void *get_unlocked_entry(struct xa_state *xas, unsigned int order) in get_unlocked_entry()
243 static void wait_entry_unlocked(struct xa_state *xas, void *entry) in wait_entry_unlocked()
264 static void put_unlocked_entry(struct xa_state *xas, void *entry, in put_unlocked_entry()
276 static void dax_unlock_entry(struct xa_state *xas, void *entry) in dax_unlock_entry()
292 static void *dax_lock_entry(struct xa_state *xas, void *entry) in dax_lock_entry()
573 static void *grab_mapping_entry(struct xa_state *xas, in grab_mapping_entry()
869 static void *dax_insert_entry(struct xa_state *xas, struct vm_fault *vmf, in dax_insert_entry()
926 static int dax_writeback_one(struct xa_state *xas, struct dax_device *dax_dev, in dax_writeback_one()
[all …]
H A Dlibfs.c404 static struct dentry *offset_find_next(struct xa_state *xas) in offset_find_next()
/openbmc/linux/mm/
H A Dmemfd.c32 static void memfd_tag_pins(struct xa_state *xas) in memfd_tag_pins()
H A Dfilemap.c1995 static inline struct folio *find_get_entry(struct xa_state *xas, pgoff_t max, in find_get_entry()
3016 static inline loff_t folio_seek_hole_data(struct xa_state *xas, in folio_seek_hole_data()
3049 static inline size_t seek_folio_size(struct xa_state *xas, struct folio *folio) in seek_folio_size()
3466 static struct folio *next_uptodate_folio(struct xa_state *xas, in next_uptodate_folio()
/openbmc/linux/fs/cachefiles/
H A Dondemand.c361 static struct cachefiles_req *cachefiles_ondemand_select_req(struct xa_state *xas, in cachefiles_ondemand_select_req()
386 struct xa_state *xas, int err) in cachefiles_ondemand_finish_req()
/openbmc/linux/fs/smb/client/
H A Dfile.c2717 struct xa_state *xas, in cifs_extend_writeback()
2828 struct xa_state *xas, in cifs_write_back_from_locked_folio()
2968 struct xa_state *xas, in cifs_writepages_begin()