Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  request_manager.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (C) 2016 Cavium, Inc.
 */


#ifndef __REQUEST_MANAGER_H
#define __REQUEST_MANAGER_H

#include "cpt_common.h"

#define TIME_IN_RESET_COUNT  5
#define COMPLETION_CODE_SIZE 8
#define COMPLETION_CODE_INIT 0
#define PENDING_THOLD  100
#define MAX_SG_IN_CNT 12
#define MAX_SG_OUT_CNT 13
#define SG_LIST_HDR_SIZE  8
#define MAX_BUF_CNT 16

union ctrl_info {
 u32 flags;
 struct {
#if defined(__BIG_ENDIAN_BITFIELD)
  u32 reserved0:26;
  u32 grp:3; /* Group bits */
  u32 dma_mode:2; /* DMA mode */
  u32 se_req:1;/* To SE core */
#else
  u32 se_req:1; /* To SE core */
  u32 dma_mode:2; /* DMA mode */
  u32 grp:3; /* Group bits */
  u32 reserved0:26;
#endif
 } s;
};

union opcode_info {
 u16 flags;
 struct {
  u8 major;
  u8 minor;
 } s;
};

struct cptvf_request {
 union opcode_info opcode;
 u16 param1;
 u16 param2;
 u16 dlen;
};

struct buf_ptr {
 u8 *vptr;
 dma_addr_t dma_addr;
 u16 size;
};

struct cpt_request_info {
 u8 incnt; /* Number of input buffers */
 u8 outcnt; /* Number of output buffers */
 u16 rlen; /* Output length */
 union ctrl_info ctrl; /* User control information */
 struct cptvf_request req; /* Request Information (Core specific) */

 bool may_sleep;

 struct buf_ptr in[MAX_BUF_CNT];
 struct buf_ptr out[MAX_BUF_CNT];

 void (*callback)(intvoid *); /* Kernel ASYNC request callabck */
 void *callback_arg; /* Kernel ASYNC request callabck arg */
};

struct sglist_component {
 union {
  u64 len;
  struct {
   __be16 len0;
   __be16 len1;
   __be16 len2;
   __be16 len3;
  } s;
 } u;
 __be64 ptr0;
 __be64 ptr1;
 __be64 ptr2;
 __be64 ptr3;
};

struct cpt_info_buffer {
 struct cpt_vf *cptvf;
 unsigned long time_in;
 u8 extra_time;

 struct cpt_request_info *req;
 dma_addr_t dptr_baddr;
 u32 dlen;
 dma_addr_t rptr_baddr;
 dma_addr_t comp_baddr;
 u8 *in_buffer;
 u8 *out_buffer;
 u8 *gather_components;
 u8 *scatter_components;

 struct pending_entry *pentry;
 volatile u64 *completion_addr;
 volatile u64 *alternate_caddr;
};

/*
 * CPT_INST_S software command definitions
 * Words EI (0-3)
 */

union vq_cmd_word0 {
 u64 u64;
 struct {
  __be16 opcode;
  __be16 param1;
  __be16 param2;
  __be16 dlen;
 } s;
};

union vq_cmd_word3 {
 u64 u64;
 struct {
#if defined(__BIG_ENDIAN_BITFIELD)
  u64 grp:3;
  u64 cptr:61;
#else
  u64 cptr:61;
  u64 grp:3;
#endif
 } s;
};

struct cpt_vq_command {
 union vq_cmd_word0 cmd;
 u64 dptr;
 u64 rptr;
 union vq_cmd_word3 cptr;
};

void vq_post_process(struct cpt_vf *cptvf, u32 qno);
int process_request(struct cpt_vf *cptvf, struct cpt_request_info *req);
#endif /* __REQUEST_MANAGER_H */

Messung V0.5
C=94 H=93 G=93

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge