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


Quelle  topology.h   Sprache: C

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

struct topo_scan {
 struct cpuinfo_x86 *c;
 unsigned int  dom_shifts[TOPO_MAX_DOMAIN];
 unsigned int  dom_ncpus[TOPO_MAX_DOMAIN];

 /* Legacy CPUID[1]:EBX[23:16] number of logical processors */
 unsigned int  ebx1_nproc_shift;

 /* AMD specific node ID which cannot be mapped into APIC space. */
 u16   amd_nodes_per_pkg;
 u16   amd_node_id;
};

void cpu_init_topology(struct cpuinfo_x86 *c);
void cpu_parse_topology(struct cpuinfo_x86 *c);
void topology_set_dom(struct topo_scan *tscan, enum x86_topology_domains dom,
        unsigned int shift, unsigned int ncpus);
bool cpu_parse_topology_ext(struct topo_scan *tscan);
void cpu_parse_topology_amd(struct topo_scan *tscan);
void cpu_topology_fixup_amd(struct topo_scan *tscan);

static inline u32 topo_shift_apicid(u32 apicid, enum x86_topology_domains dom)
{
 if (dom == TOPO_SMT_DOMAIN)
  return apicid;
 return apicid >> x86_topo_system.dom_shifts[dom - 1];
}

static inline u32 topo_relative_domain_id(u32 apicid, enum x86_topology_domains dom)
{
 if (dom != TOPO_SMT_DOMAIN)
  apicid >>= x86_topo_system.dom_shifts[dom - 1];
 return apicid & (x86_topo_system.dom_size[dom] - 1);
}

static inline u32 topo_domain_mask(enum x86_topology_domains dom)
{
 return (1U << x86_topo_system.dom_shifts[dom]) - 1;
}

/*
 * Update a domain level after the fact without propagating. Used to fixup
 * broken CPUID enumerations.
 */

static inline void topology_update_dom(struct topo_scan *tscan, enum x86_topology_domains dom,
           unsigned int shift, unsigned int ncpus)
{
 tscan->dom_shifts[dom] = shift;
 tscan->dom_ncpus[dom] = ncpus;
}

#ifdef CONFIG_X86_LOCAL_APIC
unsigned int topology_unit_count(u32 apicid, enum x86_topology_domains which_units,
     enum x86_topology_domains at_level);
#else
static inline unsigned int topology_unit_count(u32 apicid, enum x86_topology_domains which_units,
            enum x86_topology_domains at_level)
{
 return 1;
}
#endif

#endif /* ARCH_X86_TOPOLOGY_H */

Messung V0.5
C=93 H=100 G=96

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