source: trunk/hal/generic/hal_vmm.h @ 626

Last change on this file since 626 was 625, checked in by alain, 6 years ago

Fix a bug in the vmm_remove_vseg() function: the physical pages
associated to an user DATA vseg were released to the kernel when
the target process descriptor was in the reference cluster.
This physical pages release should be done only when the page
forks counter value is zero.
All other modifications are cosmetic.

File size: 3.4 KB
RevLine 
[411]1/*
[623]2 * hal_vmm.h - Kernel Virtual Memory Manager initialisation
[411]3 *
[623]4 * Authors  Alain Greiner (2016,2017,2018,2019)
[411]5 *
6 * Copyright (c) UPMC Sorbonne Universites
7 *
8 * This file is part of ALMOS-MKH.
9 *
10 * ALMOS-MKH is free software; you can redistribute it and/or modify it
11 * under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; version 2.0 of the License.
13 *
14 * ALMOS-MKH is distributed in the hope that it will be useful, but
15 * WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17 * General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with ALMOS-MKH; if not, write to the Free Software Foundation,
21 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22 */
23
[623]24#ifndef _HAL_VMM_H_
25#define _HAL_VMM_H_
[411]26
[457]27#include <hal_kernel_types.h>
[411]28#include <boot_info.h>
29
30/////////////////////////////////////////////////////////////////////////////////////////
[623]31//    Kernel Virtual Memory Manager initialisation (implementation in hal_vmm.c)
[411]32//
33// Any arch-specific implementation must implement this API.
34/////////////////////////////////////////////////////////////////////////////////////////
35
36/****  Forward declarations  ****/
37
[623]38struct process_s;
39struct boot_info_s;
[411]40
41/****************************************************************************************
[623]42 * Depending on the hardware architecture, this function creates (i.e. allocates memory
43 * and initializes) the VSL (Virtual segments List) and the GPT (Generic Page Table),
44 * for all vsegs required by the kernel process.
[411]45 ****************************************************************************************
[623]46 * @ info  : local pointer on boot_info (for kernel segments base & size).
[411]47 * @ return 0 if success / return ENOMEM if failure.
48 ***************************************************************************************/
[623]49error_t hal_vmm_kernel_init( struct boot_info_s * info );
[411]50
[623]51/****************************************************************************************
52 * Depending on the hardware architecture, this function updates the VMM of an user
53 * process identified by the <process> argument. It registers in VSL and GPT all
54 * kernel vsegs required by this architecture.
55 ****************************************************************************************
56 * @ process   : local pointer on user process descriptor.
57 * @ return 0 if success / return ENOMEM if failure.
58 ***************************************************************************************/
59error_t hal_vmm_kernel_update( struct process_s * process );
60
[625]61/****************************************************************************************
62 * Depending on the hardware architecture, this function displays the current state
63 * of the VMM of the process identified by the <process> argument.
64 * It displays all valit GPT entries when the <mapping> argument is true.
65 ****************************************************************************************
66 * @ process   : local pointer on user process descriptor.
67 * @ return 0 if success / return ENOMEM if failure.
68 ***************************************************************************************/
69void hal_vmm_display( struct process_s * process,
70                      bool_t             mapping );
71
72
73
[623]74#endif  /* HAL_VMM_H_ */
Note: See TracBrowser for help on using the repository browser.