From 49f4bdc2e528e83c69f32659289d6b83f41f75fc Mon Sep 17 00:00:00 2001 From: frtabu Date: Fri, 8 Mar 2019 19:38:21 +0100 Subject: [PATCH] try to fix build failure due to increased number of build files on some build commands (=> more log files) --- ci-scripts/oai-ci-vm-tool | 16 +-- common/utils/telnetsrv/telnetsrv.c | 26 ++-- .../utils/telnetsrv/telnetsrv_ltemeasur_def.h | 127 ++++++++++++++++ common/utils/telnetsrv/telnetsrv_phycmd.c | 136 ++++++++++-------- common/utils/telnetsrv/telnetsrv_proccmd.c | 2 +- 5 files changed, 225 insertions(+), 82 deletions(-) create mode 100644 common/utils/telnetsrv/telnetsrv_ltemeasur_def.h diff --git a/ci-scripts/oai-ci-vm-tool b/ci-scripts/oai-ci-vm-tool index c28f51415e..9b0d0b566d 100755 --- a/ci-scripts/oai-ci-vm-tool +++ b/ci-scripts/oai-ci-vm-tool @@ -231,7 +231,7 @@ case $key in VM_NAME=ci-enb-usrp ARCHIVES_LOC=enb_usrp LOG_PATTERN=.Rel14.txt - NB_PATTERN_FILES=4 + NB_PATTERN_FILES=6 BUILD_OPTIONS="--eNB -w USRP --mu" NBARGS=$[$NBARGS+256] shift @@ -272,7 +272,7 @@ case $key in VM_NAME=ci-enb-ethernet ARCHIVES_LOC=enb_eth LOG_PATTERN=.Rel14.txt - NB_PATTERN_FILES=6 + NB_PATTERN_FILES=7 BUILD_OPTIONS="--eNB -t ETHERNET --noS1" NBARGS=$[$NBARGS+256] shift @@ -281,7 +281,7 @@ case $key in VM_NAME=ci-ue-ethernet ARCHIVES_LOC=ue_eth LOG_PATTERN=.Rel14.txt - NB_PATTERN_FILES=6 + NB_PATTERN_FILES=7 BUILD_OPTIONS="--UE -t ETHERNET --noS1" NBARGS=$[$NBARGS+256] shift @@ -292,7 +292,7 @@ case $key in VM_CPU=8 ARCHIVES_LOC=l2_sim LOG_PATTERN=.Rel14.txt - NB_PATTERN_FILES=4 + NB_PATTERN_FILES=7 BUILD_OPTIONS="--eNB -t ETHERNET" RUN_OPTIONS="complex" NBARGS=$[$NBARGS+256] @@ -314,7 +314,7 @@ case $key in VM_NAME=ci-enb-usrp ARCHIVES_LOC=enb_usrp LOG_PATTERN=.Rel14.txt - NB_PATTERN_FILES=4 + NB_PATTERN_FILES=6 BUILD_OPTIONS="--eNB -w USRP --mu" NBARGS=$[$NBARGS+256] ;; @@ -351,7 +351,7 @@ case $key in VM_NAME=ci-enb-ethernet ARCHIVES_LOC=enb_eth LOG_PATTERN=.Rel14.txt - NB_PATTERN_FILES=6 + NB_PATTERN_FILES=7 BUILD_OPTIONS="--eNB -t ETHERNET --noS1" NBARGS=$[$NBARGS+256] ;; @@ -359,7 +359,7 @@ case $key in VM_NAME=ci-ue-ethernet ARCHIVES_LOC=ue_eth LOG_PATTERN=.Rel14.txt - NB_PATTERN_FILES=6 + NB_PATTERN_FILES=7 BUILD_OPTIONS="--UE -t ETHERNET --noS1" NBARGS=$[$NBARGS+256] ;; @@ -369,7 +369,7 @@ case $key in VM_CPU=8 ARCHIVES_LOC=l2_sim LOG_PATTERN=.Rel14.txt - NB_PATTERN_FILES=4 + NB_PATTERN_FILES=5 BUILD_OPTIONS="--eNB -t ETHERNET" RUN_OPTIONS="complex" NBARGS=$[$NBARGS+256] diff --git a/common/utils/telnetsrv/telnetsrv.c b/common/utils/telnetsrv/telnetsrv.c index b6803ead6b..4b6def2f6d 100644 --- a/common/utils/telnetsrv/telnetsrv.c +++ b/common/utils/telnetsrv/telnetsrv.c @@ -77,17 +77,17 @@ paramdef_t telnetoptions[] = { /* configuration parameters for telnet utility */ /* optname helpstr paramflags XXXptr defXXXval type numelt */ /*--------------------------------------------------------------------------------------------------------------------------------------------------------------------*/ - {"listenaddr", "", 0, uptr:&telnetparams.listenaddr, defstrval:"0.0.0.0", TYPE_IPV4ADDR, 0 }, - {"listenport", "", 0, uptr:&(telnetparams.listenport), defuintval:9090, TYPE_UINT, 0 }, - {"priority", "", 0, uptr:NULL, defuintval:0, TYPE_UINT, 0 }, - {"loopcount", "", 0, uptr:&(telnetparams.loopcount), defuintval:10, TYPE_UINT, 0 }, - {"loopdelay", "", 0, uptr:&(telnetparams.loopdelay), defuintval:5000, TYPE_UINT, 0 }, - {"histfile", "", PARAMFLAG_NOFREE, strptr:&(telnetparams.histfile), defstrval:"oaitelnet.history", TYPE_STRING, 0 }, - {"histsize", "", 0, iptr:&(telnetparams.histsize), defuintval:50, TYPE_INT, 0 }, - {"phypbsize", "",0, uptr:&(telnetparams.phyprntbuff_size),defuintval:65000, TYPE_UINT, 0 }, - {"staticmod", "", 0, strlistptr:NULL, defstrlistval:telnet_defstatmod,TYPE_STRINGLIST,(sizeof(telnet_defstatmod)/sizeof(char *))}, - {"shrmod", "", 0, strlistptr:NULL, defstrlistval:NULL,TYPE_STRINGLIST,0 } + {"listenaddr", "\n", 0, uptr:&telnetparams.listenaddr, defstrval:"0.0.0.0", TYPE_IPV4ADDR, 0 }, + {"listenport", "\n", 0, uptr:&(telnetparams.listenport), defuintval:9090, TYPE_UINT, 0 }, + {"priority", "\n", 0, uptr:NULL, defuintval:0, TYPE_UINT, 0 }, + {"loopcount", "\n", 0, uptr:&(telnetparams.loopcount), defuintval:10, TYPE_UINT, 0 }, + {"loopdelay", "\n", 0, uptr:&(telnetparams.loopdelay), defuintval:5000, TYPE_UINT, 0 }, + {"histfile", "\n", PARAMFLAG_NOFREE, strptr:&(telnetparams.histfile), defstrval:"oaitelnet.history", TYPE_STRING, 0 }, + {"histsize", "\n", 0, iptr:&(telnetparams.histsize), defuintval:50, TYPE_INT, 0 }, + {"phypbsize", "\n",0, uptr:&(telnetparams.phyprntbuff_size),defuintval:65000, TYPE_UINT, 0 }, + {"staticmod", "\n", 0, strlistptr:NULL, defstrlistval:telnet_defstatmod,TYPE_STRINGLIST,(sizeof(telnet_defstatmod)/sizeof(char *))}, + {"shrmod", "\n", 0, strlistptr:NULL, defstrlistval:NULL,TYPE_STRINGLIST,0 } }; int get_phybsize(void) { @@ -355,7 +355,7 @@ int setgetvar(int moduleindex,char getorset,char *params) { char varname[TELNET_CMD_MAXSIZE]; char *varval=NULL; memset(varname,0,sizeof(varname)); - n = sscanf(params,"%19s %ms",varname,&varval); + n = sscanf(params,"%s %ms",varname,&varval); for ( i=0 ; telnetparams.CmdParsers[moduleindex].var[i].varvalptr != NULL ; i++) { if ( strncasecmp(telnetparams.CmdParsers[moduleindex].var[i].varname,varname,strlen(telnetparams.CmdParsers[moduleindex].var[i].varname)) == 0) { @@ -475,7 +475,7 @@ int process_command(char *buf) { memset(cmdb,0,sizeof(cmdb)); bufbck=strdup(buf); rt=CMDSTATUS_NOTFOUND; - j = sscanf(buf,"%9s %9s %2000[^\t\n]",modulename,cmd,cmdb); + j = sscanf(buf,"%9s %9s %[^\t\n]",modulename,cmd,cmdb); if (telnetparams.telnetdbg > 0) printf("process_command: %i words, module=%s cmd=%s, parameters= %s\n",j,modulename,cmd,cmdb); diff --git a/common/utils/telnetsrv/telnetsrv_ltemeasur_def.h b/common/utils/telnetsrv/telnetsrv_ltemeasur_def.h new file mode 100644 index 0000000000..2f479d8ee6 --- /dev/null +++ b/common/utils/telnetsrv/telnetsrv_ltemeasur_def.h @@ -0,0 +1,127 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file common/utils/telnetsrv/telnetsrv_ltemeasur_def.h + * \brief: definitions of macro used to initialize the telnet_ltemeasurdef_t + * \ strucures arrays which are then used by the display functions + * \ in telnetsrv_measurements.c. + * \author Francois TABURET + * \date 2019 + * \version 0.1 + * \company NOKIA BellLabs France + * \email: francois.taburet@nokia-bell-labs.com + * \note + * \warning + */ + + +#define LTEMAC_MEASURE \ +{ \ + {"total_num_bcch_pdu", &(macstatptr->total_num_bcch_pdu),TELNET_VARTYPE_INT32,0},\ + {"bcch_buffer", &(macstatptr->bcch_buffer),TELNET_VARTYPE_INT32,0},\ + {"total_bcch_buffer", &(macstatptr->total_bcch_buffer),TELNET_VARTYPE_INT32,0},\ + {"bcch_mcs", &(macstatptr->bcch_mcs),TELNET_VARTYPE_INT32,0},\ + {"total_num_ccch_pdu", &(macstatptr->total_num_ccch_pdu),TELNET_VARTYPE_INT32,0},\ + {"ccch_buffer", &(macstatptr->ccch_buffer),TELNET_VARTYPE_INT32,0},\ + {"total_ccch_buffer", &(macstatptr->total_ccch_buffer),TELNET_VARTYPE_INT32,0},\ + {"ccch_mcs", &(macstatptr->ccch_mcs),TELNET_VARTYPE_INT32,0},\ + {"total_num_pcch_pdu", &(macstatptr->total_num_pcch_pdu),TELNET_VARTYPE_INT32,0},\ + {"pcch_buffer", &(macstatptr->pcch_buffer),TELNET_VARTYPE_INT32,0},\ + {"total_pcch_buffer", &(macstatptr->total_pcch_buffer),TELNET_VARTYPE_INT32,0},\ + {"pcch_mcs", &(macstatptr->pcch_mcs),TELNET_VARTYPE_INT32,0},\ + {"num_dlactive_UEs", &(macstatptr->num_dlactive_UEs),TELNET_VARTYPE_INT16,0},\ + {"available_prbs", &(macstatptr->available_prbs),TELNET_VARTYPE_INT16,0},\ + {"total_available_prbs", &(macstatptr->total_available_prbs),TELNET_VARTYPE_INT32,0},\ + {"available_ncces", &(macstatptr->available_ncces),TELNET_VARTYPE_INT16,0},\ + {"dlsch_bitrate", &(macstatptr->dlsch_bitrate),TELNET_VARTYPE_INT32,0},\ + {"dlsch_bytes_tx", &(macstatptr->dlsch_bytes_tx),TELNET_VARTYPE_INT32,0},\ + {"dlsch_pdus_tx", &(macstatptr->dlsch_pdus_tx),TELNET_VARTYPE_INT32,0},\ + {"total_dlsch_bitrate", &(macstatptr->total_dlsch_bitrate),TELNET_VARTYPE_INT32,0},\ + {"total_dlsch_bytes_tx", &(macstatptr->total_dlsch_bytes_tx),TELNET_VARTYPE_INT32,0},\ + {"total_dlsch_pdus_tx", &(macstatptr->total_dlsch_pdus_tx),TELNET_VARTYPE_INT32,0},\ + {"ulsch_bitrate", &(macstatptr->ulsch_bitrate),TELNET_VARTYPE_INT32,0},\ + {"ulsch_bytes_rx", &(macstatptr->ulsch_bytes_rx),TELNET_VARTYPE_INT32,0},\ + {"ulsch_pdus_rx", &(macstatptr->ulsch_pdus_rx),TELNET_VARTYPE_INT32,0},\ + {"total_ulsch_bitrate", &(macstatptr->total_ulsch_bitrate),TELNET_VARTYPE_INT32,0},\ + {"total_ulsch_bytes_rx", &(macstatptr->total_ulsch_bytes_rx),TELNET_VARTYPE_INT32,0},\ + {"total_ulsch_pdus_rx", &(macstatptr->total_ulsch_pdus_rx),TELNET_VARTYPE_INT32,0},\ + {"sched_decisions", &(macstatptr->sched_decisions),TELNET_VARTYPE_INT32,0},\ + {"missed_deadlines", &(macstatptr->missed_deadlines),TELNET_VARTYPE_INT32,0},\ +} + +#define LTEMAC_UEMEASURE \ +{ \ + {"dlsch_mcs1", &(macuestatptr->dlsch_mcs1),TELNET_VARTYPE_INT8,0},\ + {"dlsch_mcs2", &(macuestatptr->dlsch_mcs2),TELNET_VARTYPE_INT8,0},\ + {"rbs_used", &(macuestatptr->rbs_used),TELNET_VARTYPE_INT32,0},\ + {"rbs_used_retx", &(macuestatptr->rbs_used_retx),TELNET_VARTYPE_INT16,0},\ + {"total_rbs_used", &(macuestatptr->total_rbs_used),TELNET_VARTYPE_INT16,0},\ + {"ncce_used", &(macuestatptr->ncce_used),TELNET_VARTYPE_INT16,0},\ + {"ncce_used_retx", &(macuestatptr->ncce_used_retx),TELNET_VARTYPE_INT16,0},\ + {"TBS", &(macuestatptr->TBS),TELNET_VARTYPE_INT32,0},\ + {"total_pdu_bytes", &(macuestatptr->total_pdu_bytes),TELNET_VARTYPE_INT64,0},\ + {"total_num_pdus", &(macuestatptr->total_num_pdus),TELNET_VARTYPE_INT32,0},\ + {"overhead_bytes", &(macuestatptr->overhead_bytes),TELNET_VARTYPE_INT64,0},\ + {"crnti", &(macuestatptr->crnti),TELNET_VARTYPE_INT16,0},\ + {"normalized_rx_power", &(macuestatptr->normalized_rx_power),TELNET_VARTYPE_INT32,0},\ + {"target_rx_power", &(macuestatptr->target_rx_power),TELNET_VARTYPE_INT32,0},\ + {"ulsch_mcs1", &(macuestatptr->ulsch_mcs1),TELNET_VARTYPE_INT8,0},\ + {"ulsch_mcs2", &(macuestatptr->ulsch_mcs2),TELNET_VARTYPE_INT8,0},\ + {"rbs_used_rx", &(macuestatptr->rbs_used_rx),TELNET_VARTYPE_INT32,0},\ + {"rbs_used_retx_rx", &(macuestatptr->rbs_used_retx_rx),TELNET_VARTYPE_INT32,0},\ + {"total_rbs_used_rx", &(macuestatptr->total_rbs_used_rx),TELNET_VARTYPE_INT32,0},\ + {"ulsch_TBS", &(macuestatptr->ulsch_TBS),TELNET_VARTYPE_INT32,0},\ + {"total_pdu_bytes_rx", &(macuestatptr->total_pdu_bytes_rx),TELNET_VARTYPE_INT64,0},\ + {"total_num_pdus_rx", &(macuestatptr->total_num_pdus_rx),TELNET_VARTYPE_INT32,0},\ + {"num_errors_rx", &(macuestatptr->num_errors_rx),TELNET_VARTYPE_INT32,0},\ +} + +#define LTE_RLCMEASURE \ +{ \ + {"rlc_mode", NULL, TELNET_VARTYPE_UINT, 0},\ + {"tx_pdcp_sdu", NULL, TELNET_VARTYPE_UINT, 0},\ + {"tx_pdcp_bytes", NULL, TELNET_VARTYPE_UINT, 0},\ + {"tx_pdcp_sdu_discarded", NULL, TELNET_VARTYPE_UINT, 0},\ + {"tx_pdcp_bytes_discarded", NULL, TELNET_VARTYPE_UINT, 0},\ + {"tx_data_pdu", NULL, TELNET_VARTYPE_UINT, 0},\ + {"tx_data_bytes", NULL, TELNET_VARTYPE_UINT, 0},\ + {"tx_retransmit_pdu_by_status", NULL, TELNET_VARTYPE_UINT, 0},\ + {"tx_retransmit_bytes_by_status", NULL, TELNET_VARTYPE_UINT, 0},\ + {"tx_retransmit_pdu", NULL, TELNET_VARTYPE_UINT, 0},\ + {"tx_retransmit_bytes", NULL, TELNET_VARTYPE_UINT, 0},\ + {"tx_control_pdu", NULL, TELNET_VARTYPE_UINT, 0},\ + {"tx_control_bytes", NULL, TELNET_VARTYPE_UINT, 0},\ + {"rx_pdcp_sdu", NULL, TELNET_VARTYPE_UINT, 0},\ + {"rx_pdcp_bytes", NULL, TELNET_VARTYPE_UINT, 0},\ + {"rx_data_pdus_duplicate", NULL, TELNET_VARTYPE_UINT, 0},\ + {"rx_data_bytes_duplicate", NULL, TELNET_VARTYPE_UINT, 0},\ + {"rx_data_pdu", NULL, TELNET_VARTYPE_UINT, 0},\ + {"rx_data_bytes", NULL, TELNET_VARTYPE_UINT, 0},\ + {"rx_data_pdu_dropped", NULL, TELNET_VARTYPE_UINT, 0},\ + {"rx_data_bytes_dropped", NULL, TELNET_VARTYPE_UINT, 0},\ + {"rx_data_pdu_out_of_window", NULL, TELNET_VARTYPE_UINT, 0},\ + {"rx_data_bytes_out_of_window", NULL, TELNET_VARTYPE_UINT, 0},\ + {"rx_control_pdu", NULL, TELNET_VARTYPE_UINT, 0},\ + {"rx_control_bytes", NULL, TELNET_VARTYPE_UINT, 0},\ + {"timer_reorder_tout", NULL, TELNET_VARTYPE_UINT, 0},\ + {"timer_poll_retrans_tout", NULL, TELNET_VARTYPE_UINT, 0},\ + {"timer_status_prohibit_tout", NULL, TELNET_VARTYPE_UINT, 0},\ +} diff --git a/common/utils/telnetsrv/telnetsrv_phycmd.c b/common/utils/telnetsrv/telnetsrv_phycmd.c index 35554a77a6..c60126f1c7 100644 --- a/common/utils/telnetsrv/telnetsrv_phycmd.c +++ b/common/utils/telnetsrv/telnetsrv_phycmd.c @@ -29,7 +29,7 @@ * \note * \warning */ -#define _GNU_SOURCE +#define _GNU_SOURCE #include #include @@ -39,88 +39,104 @@ #define TELNETSRV_PHYCMD_MAIN #include "telnetsrv_phycmd.h" char *prnbuff; -extern int dump_eNB_l2_stats(char *buffer, int length); +extern int dump_eNB_stats(PHY_VARS_eNB *eNB, char* buffer, int length); -void init_phytelnet(void) { - prnbuff=malloc(get_phybsize() ); - - if (prnbuff == NULL) { - fprintf(stderr,"Error %s on malloc in init_phytelnet()\n",strerror(errno)); - } +void init_phytelnet(void) +{ +prnbuff=malloc(get_phybsize() ); +if (prnbuff == NULL) + { + fprintf(stderr,"Error %s on malloc in init_phytelnet()\n",strerror(errno)); + } } -void display_uestatshead( telnet_printfunc_t prnt) { - prnt("cc ue rnti Dmcs Umcs tao tau Dbr Dtb \n"); +void display_uestatshead( telnet_printfunc_t prnt) +{ +prnt("cc ue rnti Dmcs Umcs tao tau Dbr Dtb \n"); } -void dump_uestats(int debug, telnet_printfunc_t prnt, uint8_t prntflag) { - int p; - prnbuff=malloc(20480); - p=dump_eNB_l2_stats( prnbuff, 20480); +void dump_uestats(int debug, telnet_printfunc_t prnt, uint8_t prntflag) +{ - if(prntflag>=1) - prnt("%s\n",prnbuff); +int p; + + p=dump_eNB_l2_stats( prnbuff, 0); + if(prntflag>=1) + prnt("%s\n",prnbuff); + if(debug>=1) + prnt("%i bytes printed\n",p); - if(debug>=1) - prnt("%i bytes printed\n",p); - free(prnbuff); } -void display_uestats(int debug, telnet_printfunc_t prnt, int ue) { - for (int cc=0; cc<1 ; cc++) { - } +void display_uestats(int debug, telnet_printfunc_t prnt, int ue) +{ + for (int cc=0; cc<1 ; cc++) + { + + + } } -void display_phycounters(char *buf, int debug, telnet_printfunc_t prnt) { - prnt(" DLSCH kb DLSCH kb/s\n"); - dump_uestats(debug, prnt,0); +void display_phycounters(char *buf, int debug, telnet_printfunc_t prnt) +{ + prnt(" DLSCH kb DLSCH kb/s\n"); + + dump_uestats(debug, prnt,0); + } -int dump_phyvars(char *buf, int debug, telnet_printfunc_t prnt) { - if (debug > 0) - prnt("phy interface module received %s\n",buf); +int dump_phyvars(char *buf, int debug, telnet_printfunc_t prnt) +{ + + - if (strcasestr(buf,"phycnt") != NULL) { - display_phycounters(buf, debug, prnt); - } - - if (strcasestr(buf,"uestat") != NULL) { - char *cptr=strcasestr(buf+sizeof("uestat"),"UE"); - display_uestatshead(prnt); - - if (cptr != NULL) { - int ueidx = strtol( cptr+sizeof("UE"), NULL, 10); - - if (ueidx < NUMBER_OF_UE_MAX && ueidx >= 0) { - display_uestats(debug, prnt,ueidx); - } - } /* if cptr != NULL */ - else { - for (int ue=0; ue 0) + prnt("phy interface module received %s\n",buf); + if (strcasestr(buf,"phycnt") != NULL) + { + display_phycounters(buf, debug, prnt); + } + if (strcasestr(buf,"uestat") != NULL) + { + char *cptr=strcasestr(buf+sizeof("uestat"),"UE"); + display_uestatshead(prnt); + if (cptr != NULL) + { + int ueidx = strtol( cptr+sizeof("UE"), NULL, 10); + if (ueidx < NUMBER_OF_UE_MAX && ueidx >= 0) + { + display_uestats(debug, prnt,ueidx); + } + } /* if cptr != NULL */ + else + { + for (int ue=0; ue]", dump_phyvars}, + {"disp","[phycnt,uedump,uestat UE]", dump_phyvars}, - {"","",NULL}, + {"","",NULL}, }; /*-------------------------------------------------------------------------------------*/ -void add_phy_cmds(void) { - init_phytelnet(); - add_telnetcmd("phy", phy_vardef, phy_cmdarray); +void add_phy_cmds(void) +{ + + init_phytelnet(); + add_telnetcmd("phy", phy_vardef, phy_cmdarray); } diff --git a/common/utils/telnetsrv/telnetsrv_proccmd.c b/common/utils/telnetsrv/telnetsrv_proccmd.c index 3b423bd465..9dd512091d 100644 --- a/common/utils/telnetsrv/telnetsrv_proccmd.c +++ b/common/utils/telnetsrv/telnetsrv_proccmd.c @@ -183,7 +183,7 @@ struct dirent *entry; { if(entry->d_name[0] == '.') continue; - snprintf(aname, sizeof(aname), "/proc/%d/task/%s/stat", getpid(),entry->d_name); + snprintf(aname, sizeof(aname), "/proc/%d/task/%.*s/stat", getpid(),(int)(sizeof(aname)-24),entry->d_name); read_statfile(aname,debug,prnt); } /* while entry != NULL */ closedir(proc_dir);