patch-2.4.19 linux-2.4.19/include/asm-ia64/sn/sn1/hwcntrs.h
Next file: linux-2.4.19/include/asm-ia64/sn/sn1/intr.h
Previous file: linux-2.4.19/include/asm-ia64/sn/sn1/hubxb_next.h
Back to the patch index
Back to the overall index
- Lines: 97
- Date:
Fri Aug 2 17:39:45 2002
- Orig file:
linux-2.4.18/include/asm-ia64/sn/sn1/hwcntrs.h
- Orig date:
Wed Dec 31 16:00:00 1969
diff -urN linux-2.4.18/include/asm-ia64/sn/sn1/hwcntrs.h linux-2.4.19/include/asm-ia64/sn/sn1/hwcntrs.h
@@ -0,0 +1,96 @@
+/*
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ * Copyright (C) 1992 - 1997, 2000-2001 Silicon Graphics, Inc. All rights reserved.
+ */
+#ifndef _ASM_IA64_SN_SN1_HWCNTRS_H
+#define _ASM_IA64_SN_SN1_HWCNTRS_H
+
+
+typedef uint64_t refcnt_t;
+
+#define SN0_REFCNT_MAX_COUNTERS 64
+
+typedef struct sn0_refcnt_set {
+ refcnt_t refcnt[SN0_REFCNT_MAX_COUNTERS];
+ uint64_t flags;
+ uint64_t reserved[4];
+} sn0_refcnt_set_t;
+
+typedef struct sn0_refcnt_buf {
+ sn0_refcnt_set_t refcnt_set;
+ uint64_t paddr;
+ uint64_t page_size;
+ cnodeid_t cnodeid; /* cnodeid + pad[3] use 64 bits */
+ uint16_t pad[3];
+ uint64_t reserved[4];
+} sn0_refcnt_buf_t;
+
+typedef struct sn0_refcnt_args {
+ uint64_t vaddr;
+ uint64_t len;
+ sn0_refcnt_buf_t* buf;
+ uint64_t reserved[4];
+} sn0_refcnt_args_t;
+
+/*
+ * Info needed by the user level program
+ * to mmap the refcnt buffer
+ */
+
+#define RCB_INFO_GET 1
+#define RCB_SLOT_GET 2
+
+typedef struct rcb_info {
+ uint64_t rcb_len; /* total refcnt buffer len in bytes */
+
+ int rcb_sw_sets; /* number of sw counter sets in buffer */
+ int rcb_sw_counters_per_set; /* sw counters per set -- num_compact_nodes */
+ int rcb_sw_counter_size; /* sizeof(refcnt_t) -- size of sw cntr */
+
+ int rcb_base_pages; /* number of base pages in node */
+ int rcb_base_page_size; /* sw base page size */
+ uint64_t rcb_base_paddr; /* base physical address for this node */
+
+ int rcb_cnodeid; /* cnodeid for this node */
+ int rcb_granularity; /* hw page size used for counter sets */
+ uint rcb_hw_counter_max; /* max hwcounter count (width mask) */
+ int rcb_diff_threshold; /* current node differential threshold */
+ int rcb_abs_threshold; /* current node absolute threshold */
+ int rcb_num_slots; /* physmem slots */
+
+ int rcb_reserved[512];
+
+} rcb_info_t;
+
+typedef struct rcb_slot {
+ uint64_t base;
+ uint64_t size;
+} rcb_slot_t;
+
+#if defined(__KERNEL__)
+typedef struct sn0_refcnt_args_32 {
+ uint64_t vaddr;
+ uint64_t len;
+ app32_ptr_t buf;
+ uint64_t reserved[4];
+} sn0_refcnt_args_32_t;
+
+/* Defines and Macros */
+/* A set of reference counts are for 4k bytes of physical memory */
+#define NBPREFCNTP 0x1000
+#define BPREFCNTPSHIFT 12
+#define bytes_to_refcntpages(x) (((__psunsigned_t)(x)+(NBPREFCNTP-1))>>BPREFCNTPSHIFT)
+#define refcntpage_offset(x) ((__psunsigned_t)(x)&((NBPP-1)&~(NBPREFCNTP-1)))
+#define align_to_refcntpage(x) ((__psunsigned_t)(x)&(~(NBPREFCNTP-1)))
+
+extern void migr_refcnt_read(sn0_refcnt_buf_t*);
+extern void migr_refcnt_read_extended(sn0_refcnt_buf_t*);
+extern int migr_refcnt_enabled(void);
+
+#endif /* __KERNEL__ */
+
+#endif /* _ASM_IA64_SN_SN1_HWCNTRS_H */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)