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


Quelle  ordered-events.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ORDERED_EVENTS_H
#define __ORDERED_EVENTS_H

#include <linux/types.h>

struct perf_sample;

struct ordered_event {
 u64   timestamp;
 u64   file_offset;
 const char  *file_path;
 union perf_event *event;
 struct list_head list;
};

enum oe_flush {
 OE_FLUSH__NONE,
 OE_FLUSH__FINAL,
 OE_FLUSH__ROUND,
 OE_FLUSH__HALF,
 OE_FLUSH__TOP,
 OE_FLUSH__TIME,
};

struct ordered_events;

typedef int (*ordered_events__deliver_t)(struct ordered_events *oe,
      struct ordered_event *event);

struct ordered_events_buffer {
 struct list_head list;
 struct ordered_event event[];
};

struct ordered_events {
 u64     last_flush;
 u64     next_flush;
 u64     max_timestamp;
 u64     max_alloc_size;
 u64     cur_alloc_size;
 struct list_head   events;
 struct list_head   cache;
 struct list_head   to_free;
 struct ordered_events_buffer *buffer;
 struct ordered_event  *last;
 ordered_events__deliver_t  deliver;
 int     buffer_idx;
 unsigned int    nr_events;
 enum oe_flush    last_flush_type;
 u32     nr_unordered_events;
 bool     copy_on_queue;
 void    *data;
};

int ordered_events__queue(struct ordered_events *oe, union perf_event *event,
     u64 timestamp, u64 file_offset, const char *file_path);
void ordered_events__delete(struct ordered_events *oe, struct ordered_event *event);
int ordered_events__flush(struct ordered_events *oe, enum oe_flush how);
int ordered_events__flush_time(struct ordered_events *oe, u64 timestamp);
void ordered_events__init(struct ordered_events *oe, ordered_events__deliver_t deliver,
     void *data);
void ordered_events__free(struct ordered_events *oe);
void ordered_events__reinit(struct ordered_events *oe);
u64 ordered_events__first_time(struct ordered_events *oe);

static inline
void ordered_events__set_alloc_size(struct ordered_events *oe, u64 size)
{
 oe->max_alloc_size = size;
}

static inline
void ordered_events__set_copy_on_queue(struct ordered_events *oe, bool copy)
{
 oe->copy_on_queue = copy;
}

static inline u64 ordered_events__last_flush_time(struct ordered_events *oe)
{
 return oe->last_flush;
}

#endif /* __ORDERED_EVENTS_H */

Messung V0.5
C=98 H=100 G=98

¤ Dauer der Verarbeitung: 0.1 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