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


Quelle  export-internal.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Please do not include this explicitly.
 * This is used by C files generated by modpost.
 */


#ifndef __LINUX_EXPORT_INTERNAL_H__
#define __LINUX_EXPORT_INTERNAL_H__

#include <linux/compiler.h>
#include <linux/types.h>

#if defined(CONFIG_HAVE_ARCH_PREL32_RELOCATIONS)
/*
 * relative reference: this reduces the size by half on 64-bit architectures,
 * and eliminates the need for absolute relocations that require runtime
 * processing on relocatable kernels.
 */

#define __KSYM_ALIGN  ".balign 4"
#define __KSYM_REF(sym)  ".long " #sym "- ."
#elif defined(CONFIG_64BIT)
#define __KSYM_ALIGN  ".balign 8"
#define __KSYM_REF(sym)  ".quad " #sym
#else
#define __KSYM_ALIGN  ".balign 4"
#define __KSYM_REF(sym)  ".long " #sym
#endif

/*
 * For every exported symbol, do the following:
 *
 * - Put the name of the symbol and namespace (empty string "" for none) in
 *   __ksymtab_strings.
 * - Place a struct kernel_symbol entry in the __ksymtab section.
 *
 * Note on .section use: we specify progbits since usage of the "M" (SHF_MERGE)
 * section flag requires it. Use '%progbits' instead of '@progbits' since the
 * former apparently works on all arches according to the binutils source.
 */

#define __KSYMTAB(name, sym, sec, ns)      \
 asm(" .section \"__ksymtab_strings\",\"aMS\",%progbits,1" "\n" \
     "__kstrtab_" #name ":"     "\n" \
     " .asciz \"" #name "\""     "\n" \
     "__kstrtabns_" #name ":"     "\n" \
     " .asciz \"" ns "\""     "\n" \
     " .previous"      "\n" \
     " .section \"___ksymtab" sec "+" #name "\", \"a\"" "\n" \
  __KSYM_ALIGN      "\n" \
     "__ksymtab_" #name ":"     "\n" \
  __KSYM_REF(sym)      "\n" \
  __KSYM_REF(__kstrtab_ ##name)    "\n" \
  __KSYM_REF(__kstrtabns_ ##name)    "\n" \
     " .previous"      "\n" \
 )

#if defined(CONFIG_PARISC) && defined(CONFIG_64BIT)
#define KSYM_FUNC(name)  P%name
#else
#define KSYM_FUNC(name)  name
#endif

#define KSYMTAB_FUNC(name, sec, ns) __KSYMTAB(name, KSYM_FUNC(name), sec, ns)
#define KSYMTAB_DATA(name, sec, ns) __KSYMTAB(name, name, sec, ns)

#define SYMBOL_CRC(sym, crc, sec)   \
 asm(".section \"___kcrctab" sec "+" #sym "\",\"a\"" "\n" \
     ".balign 4"      "\n" \
     "__crc_" #sym ":"     "\n" \
     ".long " #crc     "\n" \
     ".previous"      "\n")

#endif /* __LINUX_EXPORT_INTERNAL_H__ */

Messung V0.5
C=94 H=99 G=96

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






                                                                                                                                                                                                                                                                                                                                                                                                     


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