Service de noyau vm_galloc

Objectif

Allère une région de mémoire globale dans le noyau 64 bits.

Syntaxe

#include <sys/types.h>
#include <sys/errno.h>
#include <sys/vmuser.h>

int vm_galloc (int  type, vmsize_t  size, ulong * eaddr)

Descriptif

Le service de noyau Vm_galloc alloue de la mémoire à partir du pool de mémoire globale du noyau sur le noyau 64 bits. La taille d'allocation est arronis à la limite 4K la plus proche. La clé de protection de page par défaut des segments de mémoire globale est 00, sauf si elle est remplacée par l'indicateur V_UREAD .

La zone de type peut avoir les valeurs suivantes, qui peuvent être combinées:

Article Descriptif
V_TRAVAIL Obligatoire. Crée un segment de mémoire de travail.
V_SYSTÈME La nouvelle allocation est une zone de système global qui n'appartient à aucune application. Les erreurs de référence de stockage dans cette zone entraînent des pannes système.
V_UREAD Remplace la protection de page par défaut 00 et crée la nouvelle région avec une protection de page par défaut de 01.
V_NOEXEC Les pages de la région ne seront pas protégées par défaut. Uniquement pris en charge sur POWER4 et le matériel ultérieur.

Le service de noyau Vm_galloc est destiné aux sous-systèmes qui possèdent de grandes structures de données pour lesquelles Xmalloc n'est pas le meilleur choix pour la gestion. Le segment de mémoire Xmalloc du noyau lui-même réside dans la mémoire globale.

Paramètres

Article Descriptif
type Les indicateurs qui peuvent être spécifiés pour contrôler l'allocation.
Taille Indique la taille, en octets, de l'allocation souhaitée.
Eaddr Pointeur vers où Vm_galloc renvoie l'adresse de début de la mémoire allouée.

Environnement d'exécution

Le service de noyau Vm_galloc peut être appelé à partir de Environnement de processus uniquement.

Valeurs renvoyées

Article Descriptif
0 % L'opération a abouti. Une nouvelle région a été allouée et son adresse de début est renvoyée à l'adresse indiquée par le paramètre Eaddr .
EINVAL Taille ou type spécifié non valide.
ENOSPC Espace insuffisant dans le segment de mémoire Galloc pour effectuer l'allocation.
ENOMEM Ressources disponibles insuffisantes pour répondre à la demande.