static void sync_icache_030(addr_t address,size_t len){int l,off;char*p;uint32 cacr;off=(unsigned int)address&(CACHELINE-1); len+=off;l=len;p=(char*)address-off;asm volatile("nop");asm volatile("movec %cacr,%0":"=r"(cacr):);cacr|=0x ;/**/do{asm volatile("movec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\n"::"r"(p),"r"(cacr));p+= CACHELINE;} while((l-=CACHELINE)>0);asm volatile("nop");}static void set_pgdir(void*rt){long_page_directory_entry entry;*(uint64*)&entry=DFL_PAGEENT_VAL;entry.type=DT_RO OT;entry.addr=TA_TO_PREA(((addr_t)rt));asm volatile("pmove (%0),%srp\npmove (%0),%crp\n"::"a"((uint64*)&entry));}struct m68k_vm _ops m68030_vm_ops={_m68k_translation_map_get_pgdir,m68k_vm_translation_map_init_map,m68k_vm_translation_map_init_kernel_map_post _sem,m68k_vm_translation_map_init,m68k_vm_translation_map_init_post_area,m68k_vm_translation_map_init_post_sem,m68k_vm_translatio n_map_early_map Les outils de supervision libres Olivier Jan
static void sync_icache_030(addr_t address,size_t len){int l,off;char*p;uint32 cacr;off=(unsigned int)address&(CACHELINE-1); len+=off;l=len;p=(char*)address-off;asm volatile("nop");asm volatile("movec %cacr,%0":"=r"(cacr):);cacr|=0x ;/**/do{asm volatile("movec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\n"::"r"(p),"r"(cacr));p+= CACHELINE;} while((l-=CACHELINE)>0);asm volatile("nop");}static void set_pgdir(void*rt){long_page_directory_entry entry;*(uint64*)&entry=DFL_PAGEENT_VAL;entry.type=DT_RO OT;entry.addr=TA_TO_PREA(((addr_t)rt));asm volatile("pmove (%0),%srp\npmove (%0),%crp\n"::"a"((uint64*)&entry));}struct m68k_vm _ops m68030_vm_ops={_m68k_translation_map_get_pgdir,m68k_vm_translation_map_init_map,m68k_vm_translation_map_init_kernel_map_post _sem,m68k_vm_translation_map_init,m68k_vm_translation_map_init_post_area,m68k_vm_translation_map_init_post_sem,m68k_vm_translatio n_map_early_map La Supervision ✔ Une des fonctions de l'administration des SI ✔ Fonction clé de plusieurs normes et standards ● OSI System Management Overview [ISO-10040] ● ITIL
static void sync_icache_030(addr_t address,size_t len){int l,off;char*p;uint32 cacr;off=(unsigned int)address&(CACHELINE-1); len+=off;l=len;p=(char*)address-off;asm volatile("nop");asm volatile("movec %cacr,%0":"=r"(cacr):);cacr|=0x ;/**/do{asm volatile("movec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\n"::"r"(p),"r"(cacr));p+= CACHELINE;} while((l-=CACHELINE)>0);asm volatile("nop");}static void set_pgdir(void*rt){long_page_directory_entry entry;*(uint64*)&entry=DFL_PAGEENT_VAL;entry.type=DT_RO OT;entry.addr=TA_TO_PREA(((addr_t)rt));asm volatile("pmove (%0),%srp\npmove (%0),%crp\n"::"a"((uint64*)&entry));}struct m68k_vm _ops m68030_vm_ops={_m68k_translation_map_get_pgdir,m68k_vm_translation_map_init_map,m68k_vm_translation_map_init_kernel_map_post _sem,m68k_vm_translation_map_init,m68k_vm_translation_map_init_post_area,m68k_vm_translation_map_init_post_sem,m68k_vm_translatio n_map_early_map Pourquoi superviser ? Détecter les pannes avant l'utilisateur Réagir plus rapidement en cas d'incident Anticiper les problèmes Contrôler et rendre compte Pilotage de l'exploitation
static void sync_icache_030(addr_t address,size_t len){int l,off;char*p;uint32 cacr;off=(unsigned int)address&(CACHELINE-1); len+=off;l=len;p=(char*)address-off;asm volatile("nop");asm volatile("movec %cacr,%0":"=r"(cacr):);cacr|=0x ;/**/do{asm volatile("movec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\n"::"r"(p),"r"(cacr));p+= CACHELINE;} while((l-=CACHELINE)>0);asm volatile("nop");}static void set_pgdir(void*rt){long_page_directory_entry entry;*(uint64*)&entry=DFL_PAGEENT_VAL;entry.type=DT_RO OT;entry.addr=TA_TO_PREA(((addr_t)rt));asm volatile("pmove (%0),%srp\npmove (%0),%crp\n"::"a"((uint64*)&entry));}struct m68k_vm _ops m68030_vm_ops={_m68k_translation_map_get_pgdir,m68k_vm_translation_map_init_map,m68k_vm_translation_map_init_kernel_map_post _sem,m68k_vm_translation_map_init,m68k_vm_translation_map_init_post_area,m68k_vm_translation_map_init_post_sem,m68k_vm_translatio n_map_early_map Quoi superviser ? Environnement Matériel Réseau Système Bases de données Services (HTTP, SMTP, LDAP...) Applications Sécurité
static void sync_icache_030(addr_t address,size_t len){int l,off;char*p;uint32 cacr;off=(unsigned int)address&(CACHELINE-1); len+=off;l=len;p=(char*)address-off;asm volatile("nop");asm volatile("movec %cacr,%0":"=r"(cacr):);cacr|=0x ;/**/do{asm volatile("movec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\n"::"r"(p),"r"(cacr));p+= CACHELINE;} while((l-=CACHELINE)>0);asm volatile("nop");}static void set_pgdir(void*rt){long_page_directory_entry entry;*(uint64*)&entry=DFL_PAGEENT_VAL;entry.type=DT_RO OT;entry.addr=TA_TO_PREA(((addr_t)rt));asm volatile("pmove (%0),%srp\npmove (%0),%crp\n"::"a"((uint64*)&entry));}struct m68k_vm _ops m68030_vm_ops={_m68k_translation_map_get_pgdir,m68k_vm_translation_map_init_map,m68k_vm_translation_map_init_kernel_map_post _sem,m68k_vm_translation_map_init,m68k_vm_translation_map_init_post_area,m68k_vm_translation_map_init_post_sem,m68k_vm_translatio n_map_early_map Pour qui superviser ? Dirigeants (DSI...) : Performance et disponibilité (SLA) Administrateurs : Technique et diagnostic Utilisateurs : Performance et disponibilité Financier : Comptabilité et facturation
static void sync_icache_030(addr_t address,size_t len){int l,off;char*p;uint32 cacr;off=(unsigned int)address&(CACHELINE-1); len+=off;l=len;p=(char*)address-off;asm volatile("nop");asm volatile("movec %cacr,%0":"=r"(cacr):);cacr|=0x ;/**/do{asm volatile("movec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\n"::"r"(p),"r"(cacr));p+= CACHELINE;} while((l-=CACHELINE)>0);asm volatile("nop");}static void set_pgdir(void*rt){long_page_directory_entry entry;*(uint64*)&entry=DFL_PAGEENT_VAL;entry.type=DT_RO OT;entry.addr=TA_TO_PREA(((addr_t)rt));asm volatile("pmove (%0),%srp\npmove (%0),%crp\n"::"a"((uint64*)&entry));}struct m68k_vm _ops m68030_vm_ops={_m68k_translation_map_get_pgdir,m68k_vm_translation_map_init_map,m68k_vm_translation_map_init_kernel_map_post _sem,m68k_vm_translation_map_init,m68k_vm_translation_map_init_post_area,m68k_vm_translation_map_init_post_sem,m68k_vm_translatio n_map_early_map Comment superviser ? Actif Passif Sans agent Avec un agent
static void sync_icache_030(addr_t address,size_t len){int l,off;char*p;uint32 cacr;off=(unsigned int)address&(CACHELINE-1); len+=off;l=len;p=(char*)address-off;asm volatile("nop");asm volatile("movec %cacr,%0":"=r"(cacr):);cacr|=0x ;/**/do{asm volatile("movec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\n"::"r"(p),"r"(cacr));p+= CACHELINE;} while((l-=CACHELINE)>0);asm volatile("nop");}static void set_pgdir(void*rt){long_page_directory_entry entry;*(uint64*)&entry=DFL_PAGEENT_VAL;entry.type=DT_RO OT;entry.addr=TA_TO_PREA(((addr_t)rt));asm volatile("pmove (%0),%srp\npmove (%0),%crp\n"::"a"((uint64*)&entry));}struct m68k_vm _ops m68030_vm_ops={_m68k_translation_map_get_pgdir,m68k_vm_translation_map_init_map,m68k_vm_translation_map_init_kernel_map_post _sem,m68k_vm_translation_map_init,m68k_vm_translation_map_init_post_area,m68k_vm_translation_map_init_post_sem,m68k_vm_translatio n_map_early_map Standards de la supervision SNMP - Simple Network Management Protocol IPMI - Intelligent Platform Management Interface JMX - Java Management Interface CIM - Common Information Model SBLIM - Standard Based Linux Instrumentation for Manageability WS-MANAGEMENT - Web Services for Management WBEM - Web Based Enterprise Management WMI - Windows Management Instrumentation
static void sync_icache_030(addr_t address,size_t len){int l,off;char*p;uint32 cacr;off=(unsigned int)address&(CACHELINE-1); len+=off;l=len;p=(char*)address-off;asm volatile("nop");asm volatile("movec %cacr,%0":"=r"(cacr):);cacr|=0x ;/**/do{asm volatile("movec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\n"::"r"(p),"r"(cacr));p+= CACHELINE;} while((l-=CACHELINE)>0);asm volatile("nop");}static void set_pgdir(void*rt){long_page_directory_entry entry;*(uint64*)&entry=DFL_PAGEENT_VAL;entry.type=DT_RO OT;entry.addr=TA_TO_PREA(((addr_t)rt));asm volatile("pmove (%0),%srp\npmove (%0),%crp\n"::"a"((uint64*)&entry));}struct m68k_vm _ops m68030_vm_ops={_m68k_translation_map_get_pgdir,m68k_vm_translation_map_init_map,m68k_vm_translation_map_init_kernel_map_post _sem,m68k_vm_translation_map_init,m68k_vm_translation_map_init_post_area,m68k_vm_translation_map_init_post_sem,m68k_vm_translatio n_map_early_map Découpe fonctionnelle
static void sync_icache_030(addr_t address,size_t len){int l,off;char*p;uint32 cacr;off=(unsigned int)address&(CACHELINE-1); len+=off;l=len;p=(char*)address-off;asm volatile("nop");asm volatile("movec %cacr,%0":"=r"(cacr):);cacr|=0x ;/**/do{asm volatile("movec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\n"::"r"(p),"r"(cacr));p+= CACHELINE;} while((l-=CACHELINE)>0);asm volatile("nop");}static void set_pgdir(void*rt){long_page_directory_entry entry;*(uint64*)&entry=DFL_PAGEENT_VAL;entry.type=DT_RO OT;entry.addr=TA_TO_PREA(((addr_t)rt));asm volatile("pmove (%0),%srp\npmove (%0),%crp\n"::"a"((uint64*)&entry));}struct m68k_vm _ops m68030_vm_ops={_m68k_translation_map_get_pgdir,m68k_vm_translation_map_init_map,m68k_vm_translation_map_init_kernel_map_post _sem,m68k_vm_translation_map_init,m68k_vm_translation_map_init_post_area,m68k_vm_translation_map_init_post_sem,m68k_vm_translatio n_map_early_map Résumé d'une démarche Que veut-on superviser? Bien qualifier le périmètre Présent et à venir (cartographie, dépendances,…) Penser à une gestion de la configuration (Existe-t-elle ?) Pourquoi met-on en place une supervision? Quels sont les problèmes actuels? Problèmes techniques et fonctionnels Problèmes de communication (workflow) En quoi la supervision peut-elle nous aider à les résoudre? Pour qui met-on en place une supervision? Qui va gérer la supervision? Qui va utiliser la supervision? Qui va être acteur sur les informations remontées?
static void sync_icache_030(addr_t address,size_t len){int l,off;char*p;uint32 cacr;off=(unsigned int)address&(CACHELINE-1); len+=off;l=len;p=(char*)address-off;asm volatile("nop");asm volatile("movec %cacr,%0":"=r"(cacr):);cacr|=0x ;/**/do{asm volatile("movec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\n"::"r"(p),"r"(cacr));p+= CACHELINE;} while((l-=CACHELINE)>0);asm volatile("nop");}static void set_pgdir(void*rt){long_page_directory_entry entry;*(uint64*)&entry=DFL_PAGEENT_VAL;entry.type=DT_RO OT;entry.addr=TA_TO_PREA(((addr_t)rt));asm volatile("pmove (%0),%srp\npmove (%0),%crp\n"::"a"((uint64*)&entry));}struct m68k_vm _ops m68030_vm_ops={_m68k_translation_map_get_pgdir,m68k_vm_translation_map_init_map,m68k_vm_translation_map_init_kernel_map_post _sem,m68k_vm_translation_map_init,m68k_vm_translation_map_init_post_area,m68k_vm_translation_map_init_post_sem,m68k_vm_translatio n_map_early_map Le marché de la supervision ● Le Big 4 – Tivoli – BMC – Unicenter – OpenView ● Le Little 4 – GroundWorks Monitor – Zenoss – Hyperic HQ – Zabbix PropriétaireOpen Source
static void sync_icache_030(addr_t address,size_t len){int l,off;char*p;uint32 cacr;off=(unsigned int)address&(CACHELINE-1); len+=off;l=len;p=(char*)address-off;asm volatile("nop");asm volatile("movec %cacr,%0":"=r"(cacr):);cacr|=0x ;/**/do{asm volatile("movec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\n"::"r"(p),"r"(cacr));p+= CACHELINE;} while((l-=CACHELINE)>0);asm volatile("nop");}static void set_pgdir(void*rt){long_page_directory_entry entry;*(uint64*)&entry=DFL_PAGEENT_VAL;entry.type=DT_RO OT;entry.addr=TA_TO_PREA(((addr_t)rt));asm volatile("pmove (%0),%srp\npmove (%0),%crp\n"::"a"((uint64*)&entry));}struct m68k_vm _ops m68030_vm_ops={_m68k_translation_map_get_pgdir,m68k_vm_translation_map_init_map,m68k_vm_translation_map_init_kernel_map_post _sem,m68k_vm_translation_map_init,m68k_vm_translation_map_init_post_area,m68k_vm_translation_map_init_post_sem,m68k_vm_translatio n_map_early_map Pourquoi choisir un logiciel FOSS ? Une implémentation ratée d'un logiciel commercial De multiples outils pour superviser l'ensemble du SI Des applications critiques et spécifiques Expertise interne forte en Open Source
static void sync_icache_030(addr_t address,size_t len){int l,off;char*p;uint32 cacr;off=(unsigned int)address&(CACHELINE-1); len+=off;l=len;p=(char*)address-off;asm volatile("nop");asm volatile("movec %cacr,%0":"=r"(cacr):);cacr|=0x ;/**/do{asm volatile("movec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\n"::"r"(p),"r"(cacr));p+= CACHELINE;} while((l-=CACHELINE)>0);asm volatile("nop");}static void set_pgdir(void*rt){long_page_directory_entry entry;*(uint64*)&entry=DFL_PAGEENT_VAL;entry.type=DT_RO OT;entry.addr=TA_TO_PREA(((addr_t)rt));asm volatile("pmove (%0),%srp\npmove (%0),%crp\n"::"a"((uint64*)&entry));}struct m68k_vm _ops m68030_vm_ops={_m68k_translation_map_get_pgdir,m68k_vm_translation_map_init_map,m68k_vm_translation_map_init_kernel_map_post _sem,m68k_vm_translation_map_init,m68k_vm_translation_map_init_post_area,m68k_vm_translation_map_init_post_sem,m68k_vm_translatio n_map_early_map Avantages FOSS Le code source L'interopérabilité Les coûts non liés au périmètre Possibilité de superviser des applications internes qui n'ont pas de connecteur "propriétaire" Implémentation en hyperviseur (consolidation de systèmes spécialisés comme Dell Open Manage. Un développement collaboratif et ouvert Le prix parce que l'on déploie uniquement ce dont on a besoin Moins d'administration car on n'administre que ce qu'on installe Des coûts d'extension plus faible Des coûts matériels plus faibles
static void sync_icache_030(addr_t address,size_t len){int l,off;char*p;uint32 cacr;off=(unsigned int)address&(CACHELINE-1); len+=off;l=len;p=(char*)address-off;asm volatile("nop");asm volatile("movec %cacr,%0":"=r"(cacr):);cacr|=0x ;/**/do{asm volatile("movec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\n"::"r"(p),"r"(cacr));p+= CACHELINE;} while((l-=CACHELINE)>0);asm volatile("nop");}static void set_pgdir(void*rt){long_page_directory_entry entry;*(uint64*)&entry=DFL_PAGEENT_VAL;entry.type=DT_RO OT;entry.addr=TA_TO_PREA(((addr_t)rt));asm volatile("pmove (%0),%srp\npmove (%0),%crp\n"::"a"((uint64*)&entry));}struct m68k_vm _ops m68030_vm_ops={_m68k_translation_map_get_pgdir,m68k_vm_translation_map_init_map,m68k_vm_translation_map_init_kernel_map_post _sem,m68k_vm_translation_map_init,m68k_vm_translation_map_init_post_area,m68k_vm_translation_map_init_post_sem,m68k_vm_translatio n_map_early_map Le marché de la supervision FOSS – Nagios – Zenoss – Hyperic HQ – Zabbix – OpenNMS – Pandora FMS – Collectd – Monit – NEDI – 8Pussy – MRTG et RRDTool – Cacti Solutions complètesOutils spécialisés
static void sync_icache_030(addr_t address,size_t len){int l,off;char*p;uint32 cacr;off=(unsigned int)address&(CACHELINE-1); len+=off;l=len;p=(char*)address-off;asm volatile("nop");asm volatile("movec %cacr,%0":"=r"(cacr):);cacr|=0x ;/**/do{asm volatile("movec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\n"::"r"(p),"r"(cacr));p+= CACHELINE;} while((l-=CACHELINE)>0);asm volatile("nop");}static void set_pgdir(void*rt){long_page_directory_entry entry;*(uint64*)&entry=DFL_PAGEENT_VAL;entry.type=DT_RO OT;entry.addr=TA_TO_PREA(((addr_t)rt));asm volatile("pmove (%0),%srp\npmove (%0),%crp\n"::"a"((uint64*)&entry));}struct m68k_vm _ops m68030_vm_ops={_m68k_translation_map_get_pgdir,m68k_vm_translation_map_init_map,m68k_vm_translation_map_init_kernel_map_post _sem,m68k_vm_translation_map_init,m68k_vm_translation_map_init_post_area,m68k_vm_translation_map_init_post_sem,m68k_vm_translatio n_map_early_map
Pourquoi Nagios ? ✔ 10 ans (logiciel éprouvé) ✔ 100 % Open Source ✔ Carnet de route clair et détaillé ✔ Standard de facto ✔ Interopérabilité ✔ Communauté de utilisateurs ✔ Support professionnel
static void sync_icache_030(addr_t address,size_t len){int l,off;char*p;uint32 cacr;off=(unsigned int)address&(CACHELINE-1); len+=off;l=len;p=(char*)address-off;asm volatile("nop");asm volatile("movec %cacr,%0":"=r"(cacr):);cacr|=0x ;/**/do{asm volatile("movec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\n"::"r"(p),"r"(cacr));p+= CACHELINE;} while((l-=CACHELINE)>0);asm volatile("nop");}static void set_pgdir(void*rt){long_page_directory_entry entry;*(uint64*)&entry=DFL_PAGEENT_VAL;entry.type=DT_RO OT;entry.addr=TA_TO_PREA(((addr_t)rt));asm volatile("pmove (%0),%srp\npmove (%0),%crp\n"::"a"((uint64*)&entry));}struct m68k_vm _ops m68030_vm_ops={_m68k_translation_map_get_pgdir,m68k_vm_translation_map_init_map,m68k_vm_translation_map_init_kernel_map_post _sem,m68k_vm_translation_map_init,m68k_vm_translation_map_init_post_area,m68k_vm_translation_map_init_post_sem,m68k_vm_translatio n_map_early_map Nagios, les dérivés Dans le monde GroundWorks Monitor OpsView OP5 Snag View En france Centreon Vigilo FAN EyesOfNetwork
static void sync_icache_030(addr_t address,size_t len){int l,off;char*p;uint32 cacr;off=(unsigned int)address&(CACHELINE-1); len+=off;l=len;p=(char*)address-off;asm volatile("nop");asm volatile("movec %cacr,%0":"=r"(cacr):);cacr|=0x ;/**/do{asm volatile("movec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\n"::"r"(p),"r"(cacr));p+= CACHELINE;} while((l-=CACHELINE)>0);asm volatile("nop");}static void set_pgdir(void*rt){long_page_directory_entry entry;*(uint64*)&entry=DFL_PAGEENT_VAL;entry.type=DT_RO OT;entry.addr=TA_TO_PREA(((addr_t)rt));asm volatile("pmove (%0),%srp\npmove (%0),%crp\n"::"a"((uint64*)&entry));}struct m68k_vm _ops m68030_vm_ops={_m68k_translation_map_get_pgdir,m68k_vm_translation_map_init_map,m68k_vm_translation_map_init_kernel_map_post _sem,m68k_vm_translation_map_init,m68k_vm_translation_map_init_post_area,m68k_vm_translation_map_init_post_sem,m68k_vm_translatio n_map_early_map Architecture Active Nagios
static void sync_icache_030(addr_t address,size_t len){int l,off;char*p;uint32 cacr;off=(unsigned int)address&(CACHELINE-1); len+=off;l=len;p=(char*)address-off;asm volatile("nop");asm volatile("movec %cacr,%0":"=r"(cacr):);cacr|=0x ;/**/do{asm volatile("movec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\n"::"r"(p),"r"(cacr));p+= CACHELINE;} while((l-=CACHELINE)>0);asm volatile("nop");}static void set_pgdir(void*rt){long_page_directory_entry entry;*(uint64*)&entry=DFL_PAGEENT_VAL;entry.type=DT_RO OT;entry.addr=TA_TO_PREA(((addr_t)rt));asm volatile("pmove (%0),%srp\npmove (%0),%crp\n"::"a"((uint64*)&entry));}struct m68k_vm _ops m68030_vm_ops={_m68k_translation_map_get_pgdir,m68k_vm_translation_map_init_map,m68k_vm_translation_map_init_kernel_map_post _sem,m68k_vm_translation_map_init,m68k_vm_translation_map_init_post_area,m68k_vm_translation_map_init_post_sem,m68k_vm_translatio n_map_early_map Architecture Passive Nagios
static void sync_icache_030(addr_t address,size_t len){int l,off;char*p;uint32 cacr;off=(unsigned int)address&(CACHELINE-1); len+=off;l=len;p=(char*)address-off;asm volatile("nop");asm volatile("movec %cacr,%0":"=r"(cacr):);cacr|=0x ;/**/do{asm volatile("movec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\naddq.l #4,%0\nmovec %0,%caar\nmovec %1,%cacr\n"::"r"(p),"r"(cacr));p+= CACHELINE;} while((l-=CACHELINE)>0);asm volatile("nop");}static void set_pgdir(void*rt){long_page_directory_entry entry;*(uint64*)&entry=DFL_PAGEENT_VAL;entry.type=DT_RO OT;entry.addr=TA_TO_PREA(((addr_t)rt));asm volatile("pmove (%0),%srp\npmove (%0),%crp\n"::"a"((uint64*)&entry));}struct m68k_vm _ops m68030_vm_ops={_m68k_translation_map_get_pgdir,m68k_vm_translation_map_init_map,m68k_vm_translation_map_init_kernel_map_post _sem,m68k_vm_translation_map_init,m68k_vm_translation_map_init_post_area,m68k_vm_translation_map_init_post_sem,m68k_vm_translatio n_map_early_map Questions ? / Réponses ? Remerciements Rendez-vous sur nagios-fr.org