Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/drivers/misc/lkdtm/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 3 kB image not shown  

Quelle  lkdtm.h   Sprache: C

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

#define pr_fmt(fmt) "lkdtm: " fmt

#include <linux/kernel.h>

extern char *lkdtm_kernel_info;

#define pr_expected_config(kconfig)    \
do {        \
 if (IS_ENABLED(kconfig))     \
  pr_err("Unexpected! This %s was built with " #kconfig "=y\n", \
   lkdtm_kernel_info);   \
 else       \
  pr_warn("This is probably expected, since this %s was built *without* " #kconfig "=y\n", \
   lkdtm_kernel_info);   \
while (0)

#ifndef MODULE
int lkdtm_check_bool_cmdline(const char *param);
#define pr_expected_config_param(kconfig, param)  \
do {        \
 if (IS_ENABLED(kconfig)) {    \
  switch (lkdtm_check_bool_cmdline(param)) { \
  case 0:      \
   pr_warn("This is probably expected, since this %s was built with " #kconfig "=y but booted with '" param "=N'\n", \
    lkdtm_kernel_info);  \
   break;     \
  case 1:      \
   pr_err("Unexpected! This %s was built with " #kconfig "=y and booted with '" param "=Y'\n", \
    lkdtm_kernel_info);  \
   break;     \
  default:     \
   pr_err("Unexpected! This %s was built with " #kconfig "=y (and booted without '" param "' specified)\n", \
    lkdtm_kernel_info);  \
  }      \
 } else {      \
  switch (lkdtm_check_bool_cmdline(param)) { \
  case 0:      \
   pr_warn("This is probably expected, as this %s was built *without* " #kconfig "=y and booted with '" param "=N'\n", \
    lkdtm_kernel_info);  \
   break;     \
  case 1:      \
   pr_err("Unexpected! This %s was built *without* " #kconfig "=y but booted with '" param "=Y'\n", \
    lkdtm_kernel_info);  \
   break;     \
  default:     \
   pr_err("This is probably expected, since this %s was built *without* " #kconfig "=y (and booted without '" param "' specified)\n", \
    lkdtm_kernel_info);  \
   break;     \
  }      \
 }       \
while (0)
#else
#define pr_expected_config_param(kconfig, param) pr_expected_config(kconfig)
#endif

/* Crash types. */
struct crashtype {
 const char *name;
 void (*func)(void);
};

#define CRASHTYPE(_name)   \
 {     \
  .name = __stringify(_name), \
  .func = lkdtm_ ## _name, \
 }

/* Category's collection of crashtypes. */
struct crashtype_category {
 struct crashtype *crashtypes;
 size_t len;
};

/* Each category's crashtypes list. */
extern struct crashtype_category bugs_crashtypes;
extern struct crashtype_category heap_crashtypes;
extern struct crashtype_category perms_crashtypes;
extern struct crashtype_category refcount_crashtypes;
extern struct crashtype_category usercopy_crashtypes;
extern struct crashtype_category stackleak_crashtypes;
extern struct crashtype_category cfi_crashtypes;
extern struct crashtype_category fortify_crashtypes;
extern struct crashtype_category powerpc_crashtypes;

/* Each category's init/exit routines. */
void __init lkdtm_bugs_init(int *recur_param);
void __init lkdtm_heap_init(void);
void __exit lkdtm_heap_exit(void);
void __init lkdtm_perms_init(void);
void __init lkdtm_usercopy_init(void);
void __exit lkdtm_usercopy_exit(void);

/* Special declaration for function-in-rodata. */
void lkdtm_rodata_do_nothing(void);

#endif

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

¤ Dauer der Verarbeitung: 0.2 Sekunden  ¤

*© 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.