#include <fcntl.h>
#include <inttypes.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <rte_cycles.h>
#include <rte_eal.h>
#include <rte_hexdump.h>
#include <rte_lcore.h>
#include <rte_mbuf.h>
Go to the source code of this file.
 | 
| int  | dao_pem_dev_init (uint16_t pem_devid, struct dao_pem_dev_conf *conf) | 
|   | 
| int  | dao_pem_dev_fini (uint16_t pem_devid) | 
|   | 
| int  | dao_pem_ctrl_region_register (uint16_t pem_devid, uintptr_t base, uint32_t len, dao_pem_ctrl_region_cb_t cb, void *ctx, bool sync_shadow) | 
|   | 
| int  | dao_pem_ctrl_region_unregister (uint16_t pem_devid, uintptr_t base, uint32_t len, dao_pem_ctrl_region_cb_t cb, void *ctx) | 
|   | 
| int  | dao_pem_vf_region_info_get (uint16_t pem_devid, uint16_t dev_id, uint8_t bar_idx, uint64_t *addr, uint64_t *size) | 
|   | 
| size_t  | dao_pem_host_page_sz (uint16_t pem_devid) | 
|   | 
| uint8_t  | dao_pem_host_interrupt_setup (uint16_t pem_devid, int vfid, uint64_t **intr_addr) | 
|   | 
| uint16_t  | dao_pem_max_vfs_get (uint16_t pem_devid) | 
|   | 
| int  | dao_pem_host_dev_add (uint16_t pem_devid, int vfid) | 
|   | 
| int  | dao_pem_host_dev_del (uint16_t pem_devid, int vfid) | 
|   | 
DAO PEM library 
Definition in file dao_pem.h.
 
◆ DAO_PEM_CTRL_REGION_MAX
      
        
          | #define DAO_PEM_CTRL_REGION_MAX   384 | 
        
      
 
PEM control region max 
Definition at line 41 of file dao_pem.h.
 
 
◆ DAO_PEM_CTRL_REGION_MASK_MAX
PEM control region mask 
Definition at line 44 of file dao_pem.h.
 
 
◆ DAO_PEM_DEFAULT_HOST_PAGE_SZ
      
        
          | #define DAO_PEM_DEFAULT_HOST_PAGE_SZ   (64 * 1024UL) | 
        
      
 
Default PEM Host page size 
Definition at line 47 of file dao_pem.h.
 
 
◆ DAO_PEM_MAX_VFS
      
        
          | #define DAO_PEM_MAX_VFS   128 | 
        
      
 
Max VF's supported 
Definition at line 49 of file dao_pem.h.
 
 
◆ PEM_PFVF_DEV_ID_PF_MASK
      
        
          | #define PEM_PFVF_DEV_ID_PF_MASK   0xF000 | 
        
      
 
PFVF DEV ID PF mask 
Definition at line 52 of file dao_pem.h.
 
 
◆ PEM_PFVF_DEV_ID_PF_SHIFT
      
        
          | #define PEM_PFVF_DEV_ID_PF_SHIFT   12 | 
        
      
 
PFVF DEV ID PF shift 
Definition at line 54 of file dao_pem.h.
 
 
◆ PEM_PFVF_DEV_ID_VF_MASK
      
        
          | #define PEM_PFVF_DEV_ID_VF_MASK   0x0FFF | 
        
      
 
PFVF DEV ID VF mask 
Definition at line 56 of file dao_pem.h.
 
 
◆ PEM_PFVF_DEV_ID_VF_SHIFT
      
        
          | #define PEM_PFVF_DEV_ID_VF_SHIFT   0 | 
        
      
 
PFVF DEV ID VF shift 
Definition at line 58 of file dao_pem.h.
 
 
◆ DAO_PEM_DEV_ID_MAX
      
        
          | #define DAO_PEM_DEV_ID_MAX   2 | 
        
      
 
PEM device ID max 
Definition at line 61 of file dao_pem.h.
 
 
◆ dao_pem_ctrl_region_cb_t
      
        
          | typedef int(* dao_pem_ctrl_region_cb_t) (void *ctx, uintptr_t shadow, uint32_t off, uint64_t val, uint64_t shadow_val) | 
        
      
 
Callback for region changes 
Definition at line 86 of file dao_pem.h.
 
 
◆ dao_pem_dev_init()
PEM device init
- Parameters
 - 
  
    | pem_devid | PEM device ID to init.  | 
    | conf | PEM device configuration.  | 
  
   
- Returns
 - Zero on success. 
 
 
 
◆ dao_pem_dev_fini()
      
        
          | int dao_pem_dev_fini  | 
          ( | 
          uint16_t  | 
          pem_devid | ) | 
           | 
        
      
 
PEM device fini
- Parameters
 - 
  
    | pem_devid | PEM device ID to cleanup.  | 
  
   
- Returns
 - Zero on success. 
 
 
 
◆ dao_pem_ctrl_region_register()
      
        
          | int dao_pem_ctrl_region_register  | 
          ( | 
          uint16_t  | 
          pem_devid,  | 
        
        
           | 
           | 
          uintptr_t  | 
          base,  | 
        
        
           | 
           | 
          uint32_t  | 
          len,  | 
        
        
           | 
           | 
          dao_pem_ctrl_region_cb_t  | 
          cb,  | 
        
        
           | 
           | 
          void *  | 
          ctx,  | 
        
        
           | 
           | 
          bool  | 
          sync_shadow  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
PEM control region register.
Registers a portion of BAR region to be polled on and get notification if something changes in the area.
- Parameters
 - 
  
    | pem_devid | PEM device ID  | 
    | base | BAR region base address.  | 
    | len | BAR region len.  | 
    | cb | Callback to receive for changes in the region.  | 
    | ctx | Context pointer passed to callback.  | 
    | sync_shadow | Flag to indicate whether to sync shadow at time this API return.  | 
  
   
- Returns
 - Zero on success. 
 
 
 
◆ dao_pem_ctrl_region_unregister()
      
        
          | int dao_pem_ctrl_region_unregister  | 
          ( | 
          uint16_t  | 
          pem_devid,  | 
        
        
           | 
           | 
          uintptr_t  | 
          base,  | 
        
        
           | 
           | 
          uint32_t  | 
          len,  | 
        
        
           | 
           | 
          dao_pem_ctrl_region_cb_t  | 
          cb,  | 
        
        
           | 
           | 
          void *  | 
          ctx  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
PEM control region unregister.
- Parameters
 - 
  
    | pem_devid | PEM device ID  | 
    | base | region base address.  | 
    | len | region len.  | 
    | cb | Callback.  | 
    | ctx | Context pointer passed to callback.  | 
  
   
- Returns
 - Zero on success. 
 
 
 
◆ dao_pem_vf_region_info_get()
      
        
          | int dao_pem_vf_region_info_get  | 
          ( | 
          uint16_t  | 
          pem_devid,  | 
        
        
           | 
           | 
          uint16_t  | 
          dev_id,  | 
        
        
           | 
           | 
          uint8_t  | 
          bar_idx,  | 
        
        
           | 
           | 
          uint64_t *  | 
          addr,  | 
        
        
           | 
           | 
          uint64_t *  | 
          size  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
PEM VF region info get.
- Parameters
 - 
  
    | pem_devid | PEM device ID  | 
    | dev_id | PF/VF device ID.  | 
    | bar_idx | BAR index to get info.  | 
    | addr | Pointer to store BAR address.  | 
    | size | Pointer to store BAR size..  | 
  
   
- Returns
 - Zero on success. 
 
 
 
◆ dao_pem_host_page_sz()
      
        
          | size_t dao_pem_host_page_sz  | 
          ( | 
          uint16_t  | 
          pem_devid | ) | 
           | 
        
      
 
PEM host page size get.
- Parameters
 - 
  
  
 
- Returns
 - Non-Zero value on success. 
 
 
 
◆ dao_pem_host_interrupt_setup()
      
        
          | uint8_t dao_pem_host_interrupt_setup  | 
          ( | 
          uint16_t  | 
          pem_devid,  | 
        
        
           | 
           | 
          int  | 
          vfid,  | 
        
        
           | 
           | 
          uint64_t **  | 
          intr_addr  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
PEM VF host interrupt setup.
- Parameters
 - 
  
    | pem_devid | PEM device ID.  | 
    | vfid | VF device ID.  | 
    | intr_addr | Pointer to an array of addresses to be filled that triggers host interrupt upon write.  | 
  
   
- Returns
 - Number of interrupts configured. 
 
 
 
◆ dao_pem_max_vfs_get()
      
        
          | uint16_t dao_pem_max_vfs_get  | 
          ( | 
          uint16_t  | 
          pem_devid | ) | 
           | 
        
      
 
PEM max VFs get.
- Parameters
 - 
  
  
 
- Returns
 - Max VFs supported. 
 
 
 
◆ dao_pem_host_dev_add()
      
        
          | int dao_pem_host_dev_add  | 
          ( | 
          uint16_t  | 
          pem_devid,  | 
        
        
           | 
           | 
          int  | 
          vfid  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
PEM host device add
- Parameters
 - 
  
    | pem_devid | PEM device ID  | 
    | vfid | VF device ID  | 
  
   
- Returns
 - Zero on success 
 
 
 
◆ dao_pem_host_dev_del()
      
        
          | int dao_pem_host_dev_del  | 
          ( | 
          uint16_t  | 
          pem_devid,  | 
        
        
           | 
           | 
          int  | 
          vfid  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
PEM host device remove
- Parameters
 - 
  
    | pem_devid | PEM device ID  | 
    | vfid | VF device ID  | 
  
   
- Returns
 - Zero on success