Appel système dr_reconfig
Objectif
Détermine la nature de la demande DLPAR.
Syntaxe
#include <sys/dr.h>
int dr_reconfig (flags, dr_info)
int flags;
dr_info_t *dr_info;Descriptif
L'appel système Config dr_reconfig est utilisé par les applications DLPAR pour ajuster leur utilisation des ressources par rapport à une demande DLPAR. Les applications sont notifiées de l'utilisation via le signal CONFIGURATION DE SIGRECONFIG , qui est généré trois fois pour chaque événement DLPAR.
La première fois est de vérifier avec la demande si l'événement DLPAR doit être poursuivi. A l'aide de l'indicateur ECHEC DE DR_EVENT_FAIL , une application peut indiquer que l'opération doit être abandonnée, si elle n'est pas en sécurité DLPAR et que son fonctionnement est considéré comme vital pour le système.
L'application est notifiée la seconde fois avant l'ajout ou la suppression de la ressource, et la troisième fois par la suite. Les applications doivent tenter de contrôler leur priorité de planification et leur politique afin de garantir la livraison en temps opportun des signaux. Le système ne garantit pas que chaque signal envoyé est livré avant de passer à l'étape suivante de l'algorithme.
L'appel système Config dr_reconfig peut également être utilisé pour avertir les applications des modifications apportées à Partition de charge qu'elles exécutent. Les applications sont informées des modifications apportées à l'unité centrale, à la capacité de mémoire et à l'ensemble de ressources.
L'interface Config dr_reconfig est sécurisée par le gestionnaire de signaux et peut être utilisée par des programmes à unités d'exécution multiples.
La structure _info est déclarée dans l'espace adresse de l'application. Le noyau remplit les données de cette structure par rapport à la demande DLPAR actuelle. L'utilisateur transmet cette structure à l'identification de la requête DLPAR en cours, en tant que paramètre du noyau lorsque l'indicateur DR_RECONFIG_DONE est utilisé. L'indicateur DR_RECONFIG_DONE est utilisé par l'application pour notifier au noyau que les actions nécessaires pour ajuster l'utilisation des ressources ont été prises en réponse au signal CONFIGURATION DE SIGRECONFIG qui leur a été envoyé. Il est prévu que le gestionnaire de signaux associé au signal CONFIGURATION DE SIGRECONFIG appelle l'interface avec l'indicateur REQUÊTE DR_QUERY pour identifier la phase de l'événement DLPAR, prenne l'action appropriée et appelle l'interface avec l'indicateur DR_RECONFIG_DONE pour indiquer au noyau que le signal a été traité. Ce type d'accusé de réception du noyau dans chacune des phases DLPAR permet à un événement DLPAR de fonctionner efficacement.
Grâce à l'ajout de nouveaux champs à la structure dr_info, les applications DR-aware peuvent prendre en charge la fonction de micro-partitionnement.
Les bits Plock et Pshm ne sont définis que si la demande consiste à supprimer de la mémoire et que le processus dispose de la mémoire Plock ou est connecté à un segment de mémoire partagée réservée. Si le bit Plock est défini, le processus appellePlock pour se démettre. Si le bit Pshm est défini, l'application a réservé des segments de mémoire partagée, qui peuvent devoir être détachés. La demande de suppression de mémoire peut réussir dans tous les cas, s'il y a suffisamment de mémoire épinglable dans le système, de sorte qu'une action dans ce cas n'est pas nécessairement requise. La zone Trames sys_pinnable_frames fournit ces informations, mais cette valeur et d'autres valeurs statistiques ne sont que des approximations. Ils reflètent l'état du système au moment de la demande. Ils ne sont pas mis à jour lors de la demande. La taille actuelle de la mémoire physique peut être déterminée en référençant la zone _system_configuration.physmem .
Pour fournir une prise en charge des opérations DR liées à la mémoire réelle virtuelle, une nouvelle zone, Opération_de_dr_op, a été ajoutée à la structure _info . La zone Opération_de_dr_op fournit des informations sur l'opération DR en cours. En outre, toutes les opérations DR futures utilisent cette zone et les bits de ressources précédemment utilisés ne seront plus étendus.
Structure dr_wlm_info
typedef struct dr_wlm_info {
unsigned int cpu_add : 1; // cpu wlm resource add for the WPAR
unsigned int cpu_rem : 1; // cpu wlm resource remove for the WPAR
unsigned int mem_add : 1; // memory wlm resource add for the WPAR
unsigned int mem_rem : 1; // memory wlm resource remove for the WPAR
unsigned int rs_cpu : 1; // wlm cpu rset change for the WPAR
unsigned int rs_mem : 1; // wlm memory rset change for the WPAR
unsigned int pad1 : 2; // un-used
unsigned int cpu_cap : 8; // percentage of cpu capacity of the WPAR
unsigned int mem_cap : 8; // percentage of the memory capacity of the WPAR
unsigned int pad2 : 8; // un-used
} dr_wlm_info_t;Structure dr_info
typedef struct dr_info {
unsigned int add : 1; // add request
rem : 1; // remove request
cpu : 1; // target resource is a cpu
mem : 1; // target resource is memory
check : 1; // check phase in effect
pre : 1; // pre phase in effect
post : 1; // post phase in effect
posterror : 1; // post error phase in effect
force : 1; // force option is in effect
bindproc : 1; // process has bindprocessor dependency
softpset : 1; // process has WLM software partition dependency
hardpset : 1; // process has processor set API dependency
plock : 1; // process has plock'd memory
pshm : 1; // process has pinned shared memory
ent_cap : 1; // target resource:entitled capacity
var_wgt : 1; // target resource:variable weight
splpar_capable : 1; // 1/0 partition is/not splpar capable
splpar_shared : 1; // 1/0 partition shared/dedicated mode
splpar_capped : 1; // 1/0 partition capped/uncapped mode
splpar_constrained : 1; // Set to 1 if requested capacity
update is constrained by PHYP to
be within partition capacity bounds.
//
unsigned int migrate : 1; // migration operation
unsigned int hibernate : 1; // hibernation operation
unsigned int partition : 1; // resource is partition
unsigned int topology_update : 1; // topology update
// The following fields are filled out for cpu based requests
int lcpu; // logical cpu ID being added or removed
int bcpu; // bind cpu ID being added or removed
// The following fields are filled out for memory based requests
size64_t req_memsz_change; // User request size in bytes
size64_t sys_memsz; // System Memory size at time of request
rpn64_t sys_free_frames; // Number of free frames in the system
rpn64_t sys_pinnable_frames; // Number of pinnable frames in system
rpn64_t sys_total_frames; // Total number of frames in system
// SPLPAR parameters.
uint64_t capacity; // partition current entitled capacity
if ent_cap bit is set, partition's
current variable capacity weight
if var_wgt bit is set.
//
int delta_cap; // delta capacity added/removed to
current value depending on add/rem
bit flag value above
//
dr_wlm_info_t dr_wlm; // DR info for the WPAR
ushort dr_op; // type of DR operation
ushort dr_pad; // reserved pad field
size64_t mem_capacity; // partition’s entitled
I/O memory or variable capacity.
ssize64_t delta_mem_capacity; // amount of I/O being added/removed
int reserved[2];
} dr_info_t;Paramètres
| Article | Descriptif |
|---|---|
| Flags | Les valeurs suivantes sont prises en charge :
|
| _info | Contient l'adresse d'une structure _info , qui est déclarée avec l'espace adresse de l'application. |
Valeurs renvoyées
En cas de succès, l'appel système Config dr_reconfig renvoie un zéro. Si elle échoue, elle renvoie une valeur négative et définit la variable Errno sur la valeur d'erreur appropriée.
Codes d'erreur
| Article | Descriptif |
|---|---|
| EINVAL | Indicateurs non valides. |
| ENXIO | Aucun événement DLPAR en cours. |
| EPERM | Droits d'accès root requis pour DR_EVENT_FAIL. |
| EINPROGRESS | L'annulation de l'événement DLPAR ne peut se produire qu'au cours de la phase de vérification. |