rusage: Move pgsize_to_pgshift to arch-memory.h
Change-Id: Ia10b6e5c7d078d345347a79a3e98c06c16d28d6a
This commit is contained in:
@@ -586,6 +586,40 @@ static inline int pgsize_to_tbllv(size_t pgsize)
|
|||||||
return level;
|
return level;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int pgsize_to_pgshift(size_t pgsize)
|
||||||
|
{
|
||||||
|
/* We need to use if instead of switch because
|
||||||
|
* sometimes PTLX_CONT_SIZE == PTLX_SIZE
|
||||||
|
*/
|
||||||
|
if (pgsize == PTL4_CONT_SIZE) {
|
||||||
|
if (CONFIG_ARM64_PGTABLE_LEVELS > 3) {
|
||||||
|
return PTL4_CONT_SHIFT;
|
||||||
|
}
|
||||||
|
} else if (pgsize == PTL4_SIZE) {
|
||||||
|
if (CONFIG_ARM64_PGTABLE_LEVELS > 3) {
|
||||||
|
return PTL4_SHIFT;
|
||||||
|
}
|
||||||
|
} else if (pgsize == PTL3_CONT_SIZE) {
|
||||||
|
if (CONFIG_ARM64_PGTABLE_LEVELS > 2) {
|
||||||
|
return PTL3_CONT_SHIFT;
|
||||||
|
}
|
||||||
|
} else if (pgsize == PTL3_SIZE) {
|
||||||
|
if (CONFIG_ARM64_PGTABLE_LEVELS > 2) {
|
||||||
|
return PTL3_SHIFT;
|
||||||
|
}
|
||||||
|
} else if (pgsize == PTL2_CONT_SIZE) {
|
||||||
|
return PTL2_CONT_SHIFT;
|
||||||
|
} else if (pgsize == PTL2_SIZE) {
|
||||||
|
return PTL2_SHIFT;
|
||||||
|
} else if (pgsize == PTL1_CONT_SIZE) {
|
||||||
|
return PTL1_CONT_SHIFT;
|
||||||
|
} else if (pgsize == PTL1_SIZE) {
|
||||||
|
return PTL1_SHIFT;
|
||||||
|
}
|
||||||
|
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
static inline size_t tbllv_to_pgsize(int level)
|
static inline size_t tbllv_to_pgsize(int level)
|
||||||
{
|
{
|
||||||
size_t pgsize = 0;
|
size_t pgsize = 0;
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
#define __HEADER_X86_COMMON_ARCH_MEMORY_H
|
#define __HEADER_X86_COMMON_ARCH_MEMORY_H
|
||||||
|
|
||||||
#include <ihk/types.h>
|
#include <ihk/types.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
#define KERNEL_CS_ENTRY 4
|
#define KERNEL_CS_ENTRY 4
|
||||||
#define KERNEL_DS_ENTRY 5
|
#define KERNEL_DS_ENTRY 5
|
||||||
@@ -365,6 +366,17 @@ static inline int pgsize_to_tbllv(size_t pgsize)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int pgsize_to_pgshift(size_t pgsize)
|
||||||
|
{
|
||||||
|
switch (pgsize) {
|
||||||
|
case PTL1_SIZE: return PTL1_SHIFT;
|
||||||
|
case PTL2_SIZE: return PTL2_SHIFT;
|
||||||
|
case PTL3_SIZE: return PTL3_SHIFT;
|
||||||
|
case PTL4_SIZE: return PTL4_SHIFT;
|
||||||
|
default: return -EINVAL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static inline size_t tbllv_to_pgsize(int level)
|
static inline size_t tbllv_to_pgsize(int level)
|
||||||
{
|
{
|
||||||
switch (level) {
|
switch (level) {
|
||||||
|
|||||||
2
ihk
2
ihk
Submodule ihk updated: c505d9c25e...9a7bb111e7
@@ -9,45 +9,6 @@
|
|||||||
|
|
||||||
extern struct rusage_global rusage;
|
extern struct rusage_global rusage;
|
||||||
|
|
||||||
static inline int rusage_pgsize_to_pgtype(size_t pgsize)
|
|
||||||
{
|
|
||||||
int ret = IHK_OS_PGSIZE_4KB;
|
|
||||||
int pgshift = pgsize_to_pgshift(pgsize);
|
|
||||||
|
|
||||||
switch (pgshift) {
|
|
||||||
case 12:
|
|
||||||
ret = IHK_OS_PGSIZE_4KB;
|
|
||||||
break;
|
|
||||||
case 16:
|
|
||||||
ret = IHK_OS_PGSIZE_64KB;
|
|
||||||
break;
|
|
||||||
case 21:
|
|
||||||
ret = IHK_OS_PGSIZE_2MB;
|
|
||||||
break;
|
|
||||||
case 25:
|
|
||||||
ret = IHK_OS_PGSIZE_32MB;
|
|
||||||
break;
|
|
||||||
case 30:
|
|
||||||
ret = IHK_OS_PGSIZE_1GB;
|
|
||||||
break;
|
|
||||||
case 34:
|
|
||||||
ret = IHK_OS_PGSIZE_16GB;
|
|
||||||
break;
|
|
||||||
case 29:
|
|
||||||
ret = IHK_OS_PGSIZE_512MB;
|
|
||||||
break;
|
|
||||||
case 42:
|
|
||||||
ret = IHK_OS_PGSIZE_4TB;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
kprintf("%s: Error: Unknown pgsize=%ld\n",
|
|
||||||
__func__, pgsize);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct rusage_percpu {
|
struct rusage_percpu {
|
||||||
unsigned long user_tsc;
|
unsigned long user_tsc;
|
||||||
unsigned long system_tsc;
|
unsigned long system_tsc;
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
#include <rusage.h>
|
#include <rusage.h>
|
||||||
#include <ihk/ihk_monitor.h>
|
#include <ihk/ihk_monitor.h>
|
||||||
#include <ihk/debug.h>
|
#include <ihk/debug.h>
|
||||||
|
#include <memory.h>
|
||||||
|
|
||||||
#ifdef ENABLE_RUSAGE
|
#ifdef ENABLE_RUSAGE
|
||||||
|
|
||||||
@@ -17,6 +18,45 @@
|
|||||||
|
|
||||||
extern void eventfd(int type);
|
extern void eventfd(int type);
|
||||||
|
|
||||||
|
static inline int rusage_pgsize_to_pgtype(size_t pgsize)
|
||||||
|
{
|
||||||
|
int ret = IHK_OS_PGSIZE_4KB;
|
||||||
|
int pgshift = pgsize_to_pgshift(pgsize);
|
||||||
|
|
||||||
|
switch (pgshift) {
|
||||||
|
case 12:
|
||||||
|
ret = IHK_OS_PGSIZE_4KB;
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
ret = IHK_OS_PGSIZE_64KB;
|
||||||
|
break;
|
||||||
|
case 21:
|
||||||
|
ret = IHK_OS_PGSIZE_2MB;
|
||||||
|
break;
|
||||||
|
case 25:
|
||||||
|
ret = IHK_OS_PGSIZE_32MB;
|
||||||
|
break;
|
||||||
|
case 30:
|
||||||
|
ret = IHK_OS_PGSIZE_1GB;
|
||||||
|
break;
|
||||||
|
case 34:
|
||||||
|
ret = IHK_OS_PGSIZE_16GB;
|
||||||
|
break;
|
||||||
|
case 29:
|
||||||
|
ret = IHK_OS_PGSIZE_512MB;
|
||||||
|
break;
|
||||||
|
case 42:
|
||||||
|
ret = IHK_OS_PGSIZE_4TB;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
kprintf("%s: Error: Unknown pgsize=%ld\n",
|
||||||
|
__func__, pgsize);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
rusage_total_memory_add(unsigned long size)
|
rusage_total_memory_add(unsigned long size)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user