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


Quelle  ram_internal.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (C) 2010 Marco Stornelli <marco.stornelli@gmail.com>
 * Copyright (C) 2011 Kees Cook <keescook@chromium.org>
 * Copyright (C) 2011 Google, Inc.
 */


#include <linux/pstore_ram.h>

/*
 * Choose whether access to the RAM zone requires locking or not.  If a zone
 * can be written to from different CPUs like with ftrace for example, then
 * PRZ_FLAG_NO_LOCK is used. For all other cases, locking is required.
 */

#define PRZ_FLAG_NO_LOCK BIT(0)
/*
 * If a PRZ should only have a single-boot lifetime, this marks it as
 * getting wiped after its contents get copied out after boot.
 */

#define PRZ_FLAG_ZAP_OLD BIT(1)

/**
 * struct persistent_ram_zone - Details of a persistent RAM zone (PRZ)
 *                              used as a pstore backend
 *
 * @paddr: physical address of the mapped RAM area
 * @size: size of mapping
 * @label: unique name of this PRZ
 * @type: frontend type for this PRZ
 * @flags: holds PRZ_FLAGS_* bits
 *
 * @buffer_lock:
 * locks access to @buffer "size" bytes and "start" offset
 * @buffer:
 * pointer to actual RAM area managed by this PRZ
 * @buffer_size:
 * bytes in @buffer->data (not including any trailing ECC bytes)
 *
 * @par_buffer:
 * pointer into @buffer->data containing ECC bytes for @buffer->data
 * @par_header:
 * pointer into @buffer->data containing ECC bytes for @buffer header
 * (i.e. all fields up to @data)
 * @rs_decoder:
 * RSLIB instance for doing ECC calculations
 * @corrected_bytes:
 * ECC corrected bytes accounting since boot
 * @bad_blocks:
 * ECC uncorrectable bytes accounting since boot
 * @ecc_info:
 * ECC configuration details
 *
 * @old_log:
 * saved copy of @buffer->data prior to most recent wipe
 * @old_log_size:
 * bytes contained in @old_log
 *
 */

struct persistent_ram_zone {
 phys_addr_t paddr;
 size_t size;
 void *vaddr;
 char *label;
 enum pstore_type_id type;
 u32 flags;

 raw_spinlock_t buffer_lock;
 struct persistent_ram_buffer *buffer;
 size_t buffer_size;

 char *par_buffer;
 char *par_header;
 struct rs_control *rs_decoder;
 int corrected_bytes;
 int bad_blocks;
 struct persistent_ram_ecc_info ecc_info;

 char *old_log;
 size_t old_log_size;
};

struct persistent_ram_zone *persistent_ram_new(phys_addr_t start, size_t size,
   u32 sig, struct persistent_ram_ecc_info *ecc_info,
   unsigned int memtype, u32 flags, char *label);
void persistent_ram_free(struct persistent_ram_zone **_prz);
void persistent_ram_zap(struct persistent_ram_zone *prz);

int persistent_ram_write(struct persistent_ram_zone *prz, const void *s,
    unsigned int count);
int persistent_ram_write_user(struct persistent_ram_zone *prz,
         const void __user *s, unsigned int count);

void persistent_ram_save_old(struct persistent_ram_zone *prz);
size_t persistent_ram_old_size(struct persistent_ram_zone *prz);
void *persistent_ram_old(struct persistent_ram_zone *prz);
void persistent_ram_free_old(struct persistent_ram_zone *prz);
ssize_t persistent_ram_ecc_string(struct persistent_ram_zone *prz,
 char *str, size_t len);

Messung V0.5
C=96 H=96 G=95

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