---
name: "rte_prefetch.h"
section: "3"
platform: "linux"
package: "dpdk-doc"
version: "24.11.4-0+deb13u1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/rte_prefetch.h"
---

# rte\_prefetch.h(3)

## NAME

rte\_prefetch.h

## SYNOPSIS

`#include <rte_compat.h>`\

### Functions

static void **rte\_prefetch0** (const volatile void \*p)\
 static void **rte\_prefetch1** (const volatile void \*p)\
 static void **rte\_prefetch2** (const volatile void \*p)\
 static void **rte\_prefetch\_non\_temporal** (const volatile void \*p)\
 static \_\_rte\_experimental void **rte\_prefetch0\_write** (const void \*p)\
 static \_\_rte\_experimental void **rte\_prefetch1\_write** (const void \*p)\
 static \_\_rte\_experimental void **rte\_prefetch2\_write** (const void \*p)\
 static \_\_rte\_experimental void **rte\_cldemote** (const volatile void \*p)\

## Detailed Description

Prefetch operations.

This file defines an API for prefetch macros / inline-functions, which are architecture-dependent. Prefetching occurs when a processor requests an instruction or data from memory to cache before it is actually needed, potentially speeding up the execution of the program.

Definition in file **rte\_prefetch.h**.

## Function Documentation

### static void rte\_prefetch0 (const volatile void \* p)` [inline]`, ` [static]`

Prefetch a cache line into all cache levels.

**Parameters**

*p* Address to prefetch

### static void rte\_prefetch1 (const volatile void \* p)` [inline]`, ` [static]`

Prefetch a cache line into all cache levels except the 0th cache level.

**Parameters**

*p* Address to prefetch

### static void rte\_prefetch2 (const volatile void \* p)` [inline]`, ` [static]`

Prefetch a cache line into all cache levels except the 0th and 1th cache levels.

**Parameters**

*p* Address to prefetch

### static void rte\_prefetch\_non\_temporal (const volatile void \* p)` [inline]`, ` [static]`

Prefetch a cache line into all cache levels (non-temporal/transient version)

The non-temporal prefetch is intended as a prefetch hint that processor will use the prefetched data only once or short period, unlike the **rte\_prefetch0()** function which imply that prefetched data to use repeatedly.

**Parameters**

*p* Address to prefetch

### static \_\_rte\_experimental void rte\_prefetch0\_write (const void \* p)` [inline]`, ` [static]`

**Warning**

**EXPERIMENTAL:** this API may change, or be removed, without prior notice

Prefetch a cache line into all cache levels, with intention to write. This prefetch variant hints to the CPU that the program is expecting to write to the cache line being prefetched.

**Parameters**

*p* Address to prefetch

Definition at line **72** of file **rte\_prefetch.h**.

### static \_\_rte\_experimental void rte\_prefetch1\_write (const void \* p)` [inline]`, ` [static]`

**Warning**

**EXPERIMENTAL:** this API may change, or be removed, without prior notice

Prefetch a cache line into all cache levels, except the 0th, with intention to write. This prefetch variant hints to the CPU that the program is expecting to write to the cache line being prefetched.

**Parameters**

*p* Address to prefetch

Definition at line **97** of file **rte\_prefetch.h**.

### static \_\_rte\_experimental void rte\_prefetch2\_write (const void \* p)` [inline]`, ` [static]`

**Warning**

**EXPERIMENTAL:** this API may change, or be removed, without prior notice

Prefetch a cache line into all cache levels, except the 0th and 1st, with intention to write. This prefetch variant hints to the CPU that the program is expecting to write to the cache line being prefetched.

**Parameters**

*p* Address to prefetch

Definition at line **122** of file **rte\_prefetch.h**.

### static \_\_rte\_experimental void rte\_cldemote (const volatile void \* p)` [inline]`, ` [static]`

**Warning**

**EXPERIMENTAL:** this API may change, or be removed, without prior notice

Demote a cache line to a more distant level of cache from the processor. CLDEMOTE hints to hardware to move (demote) a cache line from the closest to the processor to a level more distant from the processor. It is a hint and not guaranteed. rte\_cldemote is intended to move the cache line to the more remote cache, where it expects sharing to be efficient and to indicate that a line may be accessed by a different core in the future.

**Parameters**

*p* Address to demote

## Author

Generated automatically by Doxygen for DPDK from the source code.
