module yuma-proc {

    namespace "http://netconfcentral.org/ns/yuma-proc";

    prefix "proc";

    organization  "Netconf Central";

    contact "Andy Bierman <andy@netconfcentral.org>.";

    description 
      "NETCONF /proc file system monitoring.

     Copyright (c) 2009 - 2013 Andy Bierman and the persons
     identified as authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the BSD 3-Clause License
     http://opensource.org/licenses/BSD-3-Clause";

    revision 2013-07-16 {
        description  
	  "Add AnonHugePages counter for ubuntu 13.04 support.";
    }

    revision 2012-10-10 {
        description  
	  "Add more counters for ubuntu 12.04 support.";
    }

    revision 2010-06-01 {
        description  
	  "Add more counters for ubuntu 10.04 support.";
    }

    revision 2009-11-21 {
        description  
	  "Renamed proc to yuma-proc.";
    }

    revision 2009-07-17 {
        description  
	  "Initial version.";
    }

    typedef YesNo {
      type enumeration {
        enum no;
        enum yes;
      }
    }

    container proc {
        description
          "/proc file system monitoring data.";

        config false;

        container cpuinfo {
          description
            "/proc/cpuinfo file system monitoring data.";

          list cpu {
             key processor;

             leaf processor {
               description "Processor Identifier";
               type uint32;
             }

             leaf vendor_id {
               description "Vendor Identifier";
               type string;
             }

             leaf cpu_family {
               description "CPU family number";
               type uint32;
             }

             leaf model {
               description "Model number";
               type uint32;
             }

             leaf model_name {
               description "Model name";
               type string;
             }

             leaf stepping {
               description "Stepping number";
               type uint32;
             }

             leaf microcode {
               description "Microcode hex string";
               type string;
             }

             leaf cpu_MHz {
               description "CPU mega-hurtz number";
               type decimal64 {
                  fraction-digits 3;
               }
             }

             leaf cache_size {
               description "Cache size string";
               type string;
             }

             leaf physical_id {
               description "Physical Identifier number";
               type uint32;
             }

             leaf siblings {
               description "Siblings number";
               type uint32;
             }

             leaf core_id {
               description "Core identifier number";
               type uint32;
             }

             leaf cpu_cores {
               description "Number of CPU cores";
               type uint32;
             }

             leaf apicid {
               description "APICID number";
               type uint32;
             }

             leaf initial_apicid {
               description "Initial APICID number";
               type uint32;
             }

             leaf fdiv_bug {
               description "fdiv bug present";
               type YesNo;
             }

             leaf hlt_bug {
               description "hlt bug present";
               type YesNo;
             }

             leaf f00f_bug {
               description "f00f bug present";
               type YesNo;
             }

             leaf coma_bug {
               description "coma bug present";
               type YesNo;
             }

             leaf fpu {
               description "FPU present";
               type YesNo;
             }

             leaf fpu_exception {
               description "FPU exception supported";
               type YesNo;
             }

             leaf cpuid_level {
               description "CPU ID level number";
               type uint32;
             }

             leaf wp {
               description "wp enabled";
               type YesNo;
             }

             leaf flags {
               description "flags string";
               type string;
             }

             leaf bogomips {
               description "bogo MIPs number";
               type decimal64 {
                 fraction-digits 2;
               }
             }

             leaf TLB_size {
               description "TLB size: number of pages";
               type string;
             }

             leaf clflush_size {
               description "CL flush size number";
               type uint32;
             }

             leaf cache_alignment {
               description "Cache alignment number";
               type uint32;
             }

             leaf address_sizes {
               description "Address sizes string";
               type string;
             }

             leaf power_management {
               description "power management string";
               type string;
             }
          }         
        }

        container meminfo {
          description
            "/proc/meminfo system monitoring data.";

          leaf MemTotal {
            description "Memory Total string";
            type string;
          }

          leaf MemFree {
            description "Memory Free string";
            type string;
          }

          leaf Buffers {
            description "Buffers string";
            type string;
          }

          leaf Cached {
            description "Cached string";
            type string;
          }

          leaf SwapCached {
            description "Swap Cached string";
            type string;
          }

          leaf Active {
            description "Active string";
            type string;
          }

          leaf Active_anon_ {
            description "Active(anon) string";
            type string;
          }

          leaf Active_file_ {
            description "Active(file) string";
            type string;
          }

          leaf Inactive {
            description "Inactive string";
            type string;
          }

          leaf Inactive_anon_ {
            description "Inactive(anon) string";
            type string;
          }

          leaf Inactive_file_ {
            description "Inactive(file) string";
            type string;
          }

          leaf Unevictable {
            description "Unevictable string";
            type string;
          }

          leaf Mlocked {
            description "Mlocked string";
            type string;
          }
          
          leaf HighTotal {
            description "High Total string";
            type string;
          }

          leaf HighFree {
            description "High Free string";
            type string;
          }

          leaf LowTotal {
            description "Low Total string";
            type string;
          }

          leaf LowFree {
            description "Low Free string";
            type string;
          }

          leaf SwapTotal {
            description "Swap Total string";
            type string;
          }

          leaf SwapFree {
            description "Swap Free string";
            type string;
          }

          leaf Dirty {
            description "Dirty string";
            type string;
          }

          leaf Writeback {
            description "Writeback string";
            type string;
          }

          leaf AnonPages {
            description "Anonymous Pages string";
            type string;
          }

          leaf Mapped {
            description "Mapped string";
            type string;
          }

          leaf Shmem {
            description "Shmem string";
            type string;
          }

          leaf Slab {
            description "Slab string";
            type string;
          }

          leaf SReclaimable {
            description "SReclaimable string";
            type string;
          }

          leaf SUnreclaim {
            description "SUnreclaim string";
            type string;
          }

          leaf KernelStack {
            description "KernelStack string";
            type string;
          }

          leaf PageTables {
            description "PageTables string";
            type string;
          }

          leaf NFS_Unstable {
            description "NFS Unstable string";
            type string;
          }

          leaf Bounce {
            description "Bounce string";
            type string;
          }

          leaf WritebackTmp {
            description "Writeback Temp string";
            type string;
          }

          leaf CommitLimit {
            description "Commit Limit string";
            type string;
          }

          leaf Committed_AS {
            description "Committed AS string";
            type string;
          }

          leaf VmallocTotal {
            description "Vmalloc Total string";
            type string;
          }

          leaf VmallocUsed {
            description "Vmalloc Used string";
            type string;
          }

          leaf VmallocChunk {
            description "Vmalloc Chunk string";
            type string;
          }

          leaf HardwareCorrupted {
            description "HardwareCorrupted string";
            type string;
          }

          leaf AnonHugePages {
            description "Anonymous Huge Pages string (kBytes)";
            type string;
          }

          leaf HugePages_Total {
            description "Huge Pages Total number";
            type uint32;
          }

          leaf HugePages_Free {
            description "Huge Pages Free number";
            type uint32;
          }

          leaf HugePages_Rsvd {
            description "Huge Pages Reserved number";
            type uint32;
          }

          leaf HugePages_Surp {
            description "Huge Pages Surplus number";
            type uint32;
          }

          leaf Hugepagesize {
            description "Huge Page size string";
            type string;
          }

          leaf DirectMap4k {
            description "Direct Map 4k string";
            type string;
          }

          leaf DirectMap2M {
            description "Direct Map 2M string";
            type string;
          }

          leaf DirectMap4M {
            description "Direct Map 4M string";
            type string;
          }

        }
   }
}
