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

Last change on this file since 635 was 635, checked in by alain, 17 months ago

This version is a major evolution: The physical memory allocators,
defined in the kmem.c, ppm.c, and kcm.c files have been modified
to support remote accesses. The RPCs that were previously user
to allocate physical memory in a remote cluster have been removed.
This has been done to cure a dead-lock in case of concurrent page-faults.

This version 2.2 has been tested on a (4 clusters / 2 cores per cluster)
TSAR architecture, for both the "sort" and the "fft" applications.

File size: 3.3 KB
Line 
1/*
2 * hal_vmm.h - Kernel Virtual Memory Manager initialisation
3 *
4 * Authors  Alain Greiner (2016,2017,2018,2019)
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
24#ifndef _HAL_VMM_H_
25#define _HAL_VMM_H_
26
27#include <hal_kernel_types.h>
28#include <boot_info.h>
29
30/////////////////////////////////////////////////////////////////////////////////////////
31//    Kernel Virtual Memory Manager initialisation (implementation in hal_vmm.c)
32//
33// Any arch-specific implementation must implement this API.
34/////////////////////////////////////////////////////////////////////////////////////////
35
36/****  Forward declarations  ****/
37
38struct process_s;
39struct boot_info_s;
40
41/****************************************************************************************
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.
45 ****************************************************************************************
46 * @ info  : local pointer on boot_info (for kernel segments base & size).
47 * @ return 0 if success / return ENOMEM if failure.
48 ***************************************************************************************/
49error_t hal_vmm_kernel_init( struct boot_info_s * info );
50
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
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_xp   : extended pointer on process descriptor.
67 * @ mapping      : display all mapped GPT entries when true.
68 ***************************************************************************************/
69void hal_vmm_display( xptr_t   process_xp,
70                      bool_t   mapping );
71
72
73
74#endif  /* HAL_VMM_H_ */
Note: See TracBrowser for help on using the repository browser.