demand_paging.c

/***************************************************************************/
/*  This demo is designed for VM allocation and observed by sar.           */
/*  Author:Yuq               Date:2023-9-10                                */
/***************************************************************************/
#include <unistd.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <err.h>

#define BUFFER_SIZE  (100*1024*1024)
#define NCYCLE  10
#define PAGE_SIZE  4096

int main()
{
    char *p;
    time_t t;
    char *s;

    t=time(NULL);
    s=ctime(&t);
    printf("%.*s:before allocation,please press Enter\n",(int)(strlen(s)-1),s);
    getchar();

    p=malloc(BUFFER_SIZE);
    if(p==NULL)
       err(EXIT_FAILURE,"malloc() failed");
    t=time(NULL);
    s=ctime(&t);
    printf("%.*s:allocated %dMB,please press Enter\n",(int)(strlen(s)-1),s,BUFFER_SIZE/(1024*1024));
    getchar();

    int i;
    for(i=0;i<BUFFER_SIZE;i+=PAGE_SIZE)
    {
    p[i]=0;
    int cycle=i/(BUFFER_SIZE/NCYCLE);
    if(cycle!=0 && i%(BUFFER_SIZE/NCYCLE)==0)
    {
        t=time(NULL);
        s=ctime(&t);
        printf("%.*s:touched %dMB\n",(int)(strlen(s)-1),s,i/(1024*1024));
        sleep(1);
    }
    }
    t=time(NULL);
    s=ctime(&t);
    printf("%.*s:touched %dMB,please press Enter\n",(int)(strlen(s)-1),s,BUFFER_SIZE/(1024*1024));
    getchar();
    exit(EXIT_SUCCESS);
}
 

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
uint64_t S1mmeSession::UpdateUserDataSTMSIChange(S1APNode* p_node, uint64_t stmsi) { if(!stmsi) return 0; uint64_t old_stmsi = 0; //如果stmsi没有改变, 则直接返回 SPUserInfo& sp_local_user_info = p_node->GetUserInfo(); if (sp_local_user_info->HasSTMSI() && sp_local_user_info->GetSTMSI() == stmsi) { return old_stmsi; } //删除 old stmsi if (sp_local_user_info->HasSTMSI()) { old_stmsi = sp_local_user_info->GetSTMSI(); STMSI_Iter iter = ue_stmsi_map_.find(old_stmsi); if (iter != ue_stmsi_map_.end()) { ue_stmsi_map_.erase(iter); } DeleteFromStmsiTimeoutMap(old_stmsi); } //删除可能的 paging 干扰 StmsiWithMmegi_T old_stmsi_key(old_stmsi); S1APNode** pp_paging = p_stmsi_paging_map_->GetData(old_stmsi_key); if (pp_paging != NULL) { if (handle_session_version_ == S1MME_SESSION_VERSION_CHINA_TELECOM) { CtOutputNode(*pp_paging, false); } else { (*pp_paging)->DeletePagingKqi(); } p_stmsi_paging_map_->DeleteData(old_stmsi_key, p_s1ap_node_allocator_); } StmsiWithMmegi_T new_stmsi_key(stmsi); pp_paging = p_stmsi_paging_map_->GetData(new_stmsi_key); if (pp_paging != NULL) { if(handle_session_version_ == S1MME_SESSION_VERSION_CHINA_TELECOM) { CtOutputNode(*pp_paging, false); } else { (*pp_paging)->DeletePagingKqi(); } p_stmsi_paging_map_->DeleteData(new_stmsi_key, p_s1ap_node_allocator_); } //删除可能的 new_stmsi 干扰 STMSI_Iter iter = ue_stmsi_map_.find(stmsi); if (iter != ue_stmsi_map_.end()) { iter->second->flag_.stmsi = false; iter->second->index_.stmsi =0; ue_stmsi_map_.erase(iter); } UpdateFromStmsiTimeoutMap(stmsi, current_time_.tv_sec, true); //插入 new_stmsi(local user info) ue_stmsi_map_.insert(std::make_pair(stmsi, sp_local_user_info)); sp_local_user_info->SetSTMSI(stmsi); return old_stmsi; }什么意思
06-11
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值