8181< tr class ="heading "> < td colspan ="2 "> < h2 class ="groupheader "> < a id ="func-members " name ="func-members "> </ a >
8282Functions</ h2 > </ td > </ tr >
8383< tr class ="memitem:a60d1e2bdc5c39558234c421a071d6f1c "> < td class ="memItemLeft " align ="right " valign ="top "> void * </ td > < td class ="memItemRight " valign ="bottom "> < a class ="el " href ="analyzer_8c.html#a60d1e2bdc5c39558234c421a071d6f1c "> analyzer</ a > (void *arg)</ td > </ tr >
84+ < tr class ="memdesc:a60d1e2bdc5c39558234c421a071d6f1c "> < td class ="mdescLeft ">  </ td > < td class ="mdescRight "> Analyzer function. < br /> </ td > </ tr >
8485< tr class ="separator:a60d1e2bdc5c39558234c421a071d6f1c "> < td class ="memSeparator " colspan ="2 ">  </ td > </ tr >
8586</ table >
8687< h2 class ="groupheader "> Function Documentation</ h2 >
@@ -100,54 +101,57 @@ <h2 class="memtitle"><span class="permalink"><a href="#a60d1e2bdc5c39558234c421a
100101 </ table >
101102</ div > < div class ="memdoc ">
102103
103- < p class ="definition "> Definition at line < a class ="el " href ="analyzer_8c_source.html#l00028 "> 28</ a > of file < a class ="el " href ="analyzer_8c_source.html "> analyzer.c</ a > .</ p >
104- < div class ="fragment "> < div class ="line "> < span class ="lineno "> 28</ span > {</ div >
105- < div class ="line "> < span class ="lineno "> 29</ span > < span class ="keyword "> struct </ span > < a class ="code hl_struct " href ="structproc__stat.html "> proc_stat</ a > *prev;</ div >
106- < div class ="line "> < span class ="lineno "> 30</ span > < span class ="keywordtype "> unsigned</ span > < span class ="keywordtype "> long</ span > *avg;</ div >
107- < div class ="line "> < span class ="lineno "> 31</ span > < span class ="keywordtype "> unsigned</ span > < span class ="keywordtype "> long</ span > *bufforAvg;</ div >
108- < div class ="line "> < span class ="lineno "> 32</ span > < span class ="keyword "> struct </ span > < a class ="code hl_struct " href ="structproc__stat.html "> proc_stat</ a > *stats;</ div >
109- < div class ="line "> < span class ="lineno "> 33</ span > </ div >
110- < div class ="line "> < span class ="lineno "> 34</ span > (void)arg;</ div >
111- < div class ="line "> < span class ="lineno "> 35</ span > </ div >
112- < div class ="line "> < span class ="lineno "> 36</ span > < span class ="keywordflow "> if</ span > ((prev = malloc((< span class ="keywordtype "> unsigned</ span > < span class ="keywordtype "> long</ span > )g_nproc * < span class ="keyword "> sizeof</ span > (< span class ="keyword "> struct</ span > < a class ="code hl_struct " href ="structproc__stat.html "> proc_stat</ a > ))) ==</ div >
113- < div class ="line "> < span class ="lineno "> 37</ span > NULL) {</ div >
114- < div class ="line "> < span class ="lineno "> 38</ span > < span class ="keywordflow "> return</ span > NULL;</ div >
115- < div class ="line "> < span class ="lineno "> 39</ span > }</ div >
116- < div class ="line "> < span class ="lineno "> 40</ span > < span class ="keywordflow "> if</ span > ((avg = malloc((< span class ="keywordtype "> unsigned</ span > < span class ="keywordtype "> long</ span > )g_nproc * < span class ="keyword "> sizeof</ span > (< span class ="keywordtype "> unsigned</ span > < span class ="keywordtype "> long</ span > ))) == NULL) {</ div >
117- < div class ="line "> < span class ="lineno "> 41</ span > free(prev);</ div >
118- < div class ="line "> < span class ="lineno "> 42</ span > < span class ="keywordflow "> return</ span > NULL;</ div >
119- < div class ="line "> < span class ="lineno "> 43</ span > }</ div >
120- < div class ="line "> < span class ="lineno "> 44</ span > pthread_cleanup_push(free, prev) pthread_cleanup_push(free, avg) < span class ="keywordflow "> while</ span > (1) {</ div >
121- < div class ="line "> < span class ="lineno "> 45</ span > < a class ="code hl_function " href ="cputracker_8c.html#ac99b6069bf629214ce6258902739d613 "> notify_watchdog</ a > (Analyzer);</ div >
122- < div class ="line "> < span class ="lineno "> 46</ span > </ div >
123- < div class ="line "> < span class ="lineno "> 47</ span > sem_wait(&g_dataFilledSpaceSemaphore);</ div >
124- < div class ="line "> < span class ="lineno "> 48</ span > pthread_mutex_lock(&g_dataBufferMutex);</ div >
125- < div class ="line "> < span class ="lineno "> 49</ span > </ div >
126- < div class ="line "> < span class ="lineno "> 50</ span > stats = < a class ="code hl_function " href ="cputracker_8c.html#a6d7b4993bb9144e4cab9f9c7420c996a "> get_item_from_data_buffer</ a > ();</ div >
127- < div class ="line "> < span class ="lineno "> 51</ span > < span class ="keywordflow "> for</ span > (< span class ="keywordtype "> int</ span > i = 0; i < g_nproc; i++) {</ div >
128- < div class ="line "> < span class ="lineno "> 52</ span > avg[i] = average_cpu_usage(prev[i], stats[i]);</ div >
129- < div class ="line "> < span class ="lineno "> 53</ span > prev[i] = stats[i];</ div >
130- < div class ="line "> < span class ="lineno "> 54</ span > }</ div >
131- < div class ="line "> < span class ="lineno "> 55</ span > </ div >
132- < div class ="line "> < span class ="lineno "> 56</ span > pthread_mutex_unlock(&g_dataBufferMutex);</ div >
133- < div class ="line "> < span class ="lineno "> 57</ span > sem_post(&g_dataLeftSpaceSemaphore);</ div >
134- < div class ="line "> < span class ="lineno "> 58</ span > </ div >
135- < div class ="line "> < span class ="lineno "> 59</ span > < span class ="comment "> //</ span > </ div >
136- < div class ="line "> < span class ="lineno "> 60</ span > </ div >
137- < div class ="line "> < span class ="lineno "> 61</ span > sem_wait(&g_printLeftSpaceSemaphore);</ div >
138- < div class ="line "> < span class ="lineno "> 62</ span > pthread_mutex_lock(&g_printBufferMutex);</ div >
139- < div class ="line "> < span class ="lineno "> 63</ span > </ div >
140- < div class ="line "> < span class ="lineno "> 64</ span > bufforAvg = < a class ="code hl_function " href ="cputracker_8c.html#a2b8f2341417ff6536dcfd85113bd3a5d "> get_item_from_print_buffer</ a > ();</ div >
141- < div class ="line "> < span class ="lineno "> 65</ span > memcpy(bufforAvg, avg, (< span class ="keywordtype "> unsigned</ span > < span class ="keywordtype "> long</ span > )g_nproc * < span class ="keyword "> sizeof</ span > (< span class ="keywordtype "> unsigned</ span > < span class ="keywordtype "> long</ span > ));</ div >
142- < div class ="line "> < span class ="lineno "> 66</ span > </ div >
143- < div class ="line "> < span class ="lineno "> 67</ span > pthread_mutex_unlock(&g_printBufferMutex);</ div >
144- < div class ="line "> < span class ="lineno "> 68</ span > sem_post(&g_printFilledSpaceSemaphore);</ div >
145- < div class ="line "> < span class ="lineno "> 69</ span > }</ div >
146- < div class ="line "> < span class ="lineno "> 70</ span > pthread_cleanup_pop(1);</ div >
147- < div class ="line "> < span class ="lineno "> 71</ span > pthread_cleanup_pop(1);</ div >
148- < div class ="line "> < span class ="lineno "> 72</ span > }</ div >
149- < div class ="ttc " id ="acputracker_8c_html_a2b8f2341417ff6536dcfd85113bd3a5d "> < div class ="ttname "> < a href ="cputracker_8c.html#a2b8f2341417ff6536dcfd85113bd3a5d "> get_item_from_print_buffer</ a > </ div > < div class ="ttdeci "> unsigned long * get_item_from_print_buffer(void)</ div > < div class ="ttdoc "> Function getting item in print buffer.</ div > < div class ="ttdef "> < b > Definition:</ b > < a href ="cputracker_8c_source.html#l00079 "> cputracker.c:79</ a > </ div > </ div >
150- < div class ="ttc " id ="acputracker_8c_html_a6d7b4993bb9144e4cab9f9c7420c996a "> < div class ="ttname "> < a href ="cputracker_8c.html#a6d7b4993bb9144e4cab9f9c7420c996a "> get_item_from_data_buffer</ a > </ div > < div class ="ttdeci "> struct proc_stat * get_item_from_data_buffer(void)</ div > < div class ="ttdoc "> Function getting item in data buffer.</ div > < div class ="ttdef "> < b > Definition:</ b > < a href ="cputracker_8c_source.html#l00069 "> cputracker.c:69</ a > </ div > </ div >
104+ < p > Analyzer function. </ p >
105+ < p > The Analyzer is responsible for taking data from the buffer and processing it into % CPU usage. </ p >
106+
107+ < p class ="definition "> Definition at line < a class ="el " href ="analyzer_8c_source.html#l00035 "> 35</ a > of file < a class ="el " href ="analyzer_8c_source.html "> analyzer.c</ a > .</ p >
108+ < div class ="fragment "> < div class ="line "> < span class ="lineno "> 35</ span > {</ div >
109+ < div class ="line "> < span class ="lineno "> 36</ span > < span class ="keyword "> struct </ span > < a class ="code hl_struct " href ="structproc__stat.html "> proc_stat</ a > *prev;</ div >
110+ < div class ="line "> < span class ="lineno "> 37</ span > < span class ="keywordtype "> unsigned</ span > < span class ="keywordtype "> long</ span > *avg;</ div >
111+ < div class ="line "> < span class ="lineno "> 38</ span > < span class ="keywordtype "> unsigned</ span > < span class ="keywordtype "> long</ span > *bufforAvg;</ div >
112+ < div class ="line "> < span class ="lineno "> 39</ span > < span class ="keyword "> struct </ span > < a class ="code hl_struct " href ="structproc__stat.html "> proc_stat</ a > *stats;</ div >
113+ < div class ="line "> < span class ="lineno "> 40</ span > </ div >
114+ < div class ="line "> < span class ="lineno "> 41</ span > (void)arg;</ div >
115+ < div class ="line "> < span class ="lineno "> 42</ span > </ div >
116+ < div class ="line "> < span class ="lineno "> 43</ span > < span class ="keywordflow "> if</ span > ((prev = malloc((< span class ="keywordtype "> unsigned</ span > < span class ="keywordtype "> long</ span > )g_nproc * < span class ="keyword "> sizeof</ span > (< span class ="keyword "> struct</ span > < a class ="code hl_struct " href ="structproc__stat.html "> proc_stat</ a > ))) ==</ div >
117+ < div class ="line "> < span class ="lineno "> 44</ span > NULL) {</ div >
118+ < div class ="line "> < span class ="lineno "> 45</ span > < span class ="keywordflow "> return</ span > NULL;</ div >
119+ < div class ="line "> < span class ="lineno "> 46</ span > }</ div >
120+ < div class ="line "> < span class ="lineno "> 47</ span > < span class ="keywordflow "> if</ span > ((avg = malloc((< span class ="keywordtype "> unsigned</ span > < span class ="keywordtype "> long</ span > )g_nproc * < span class ="keyword "> sizeof</ span > (< span class ="keywordtype "> unsigned</ span > < span class ="keywordtype "> long</ span > ))) == NULL) {</ div >
121+ < div class ="line "> < span class ="lineno "> 48</ span > free(prev);</ div >
122+ < div class ="line "> < span class ="lineno "> 49</ span > < span class ="keywordflow "> return</ span > NULL;</ div >
123+ < div class ="line "> < span class ="lineno "> 50</ span > }</ div >
124+ < div class ="line "> < span class ="lineno "> 51</ span > pthread_cleanup_push(free, prev) pthread_cleanup_push(free, avg) < span class ="keywordflow "> while</ span > (1) {</ div >
125+ < div class ="line "> < span class ="lineno "> 52</ span > < a class ="code hl_function " href ="cputracker_8c.html#ac99b6069bf629214ce6258902739d613 "> notify_watchdog</ a > (Analyzer);</ div >
126+ < div class ="line "> < span class ="lineno "> 53</ span > </ div >
127+ < div class ="line "> < span class ="lineno "> 54</ span > sem_wait(&g_dataFilledSpaceSemaphore);</ div >
128+ < div class ="line "> < span class ="lineno "> 55</ span > pthread_mutex_lock(&g_dataBufferMutex);</ div >
129+ < div class ="line "> < span class ="lineno "> 56</ span > </ div >
130+ < div class ="line "> < span class ="lineno "> 57</ span > stats = < a class ="code hl_function " href ="cputracker_8c.html#a6d7b4993bb9144e4cab9f9c7420c996a "> get_item_from_data_buffer</ a > ();</ div >
131+ < div class ="line "> < span class ="lineno "> 58</ span > < span class ="keywordflow "> for</ span > (< span class ="keywordtype "> int</ span > i = 0; i < g_nproc; i++) {</ div >
132+ < div class ="line "> < span class ="lineno "> 59</ span > avg[i] = cpu_usage(prev[i], stats[i]);</ div >
133+ < div class ="line "> < span class ="lineno "> 60</ span > prev[i] = stats[i];</ div >
134+ < div class ="line "> < span class ="lineno "> 61</ span > }</ div >
135+ < div class ="line "> < span class ="lineno "> 62</ span > </ div >
136+ < div class ="line "> < span class ="lineno "> 63</ span > pthread_mutex_unlock(&g_dataBufferMutex);</ div >
137+ < div class ="line "> < span class ="lineno "> 64</ span > sem_post(&g_dataLeftSpaceSemaphore);</ div >
138+ < div class ="line "> < span class ="lineno "> 65</ span > </ div >
139+ < div class ="line "> < span class ="lineno "> 66</ span > < span class ="comment "> //</ span > </ div >
140+ < div class ="line "> < span class ="lineno "> 67</ span > </ div >
141+ < div class ="line "> < span class ="lineno "> 68</ span > sem_wait(&g_printLeftSpaceSemaphore);</ div >
142+ < div class ="line "> < span class ="lineno "> 69</ span > pthread_mutex_lock(&g_printBufferMutex);</ div >
143+ < div class ="line "> < span class ="lineno "> 70</ span > </ div >
144+ < div class ="line "> < span class ="lineno "> 71</ span > bufforAvg = < a class ="code hl_function " href ="cputracker_8c.html#a2b8f2341417ff6536dcfd85113bd3a5d "> get_item_from_print_buffer</ a > ();</ div >
145+ < div class ="line "> < span class ="lineno "> 72</ span > memcpy(bufforAvg, avg, (< span class ="keywordtype "> unsigned</ span > < span class ="keywordtype "> long</ span > )g_nproc * < span class ="keyword "> sizeof</ span > (< span class ="keywordtype "> unsigned</ span > < span class ="keywordtype "> long</ span > ));</ div >
146+ < div class ="line "> < span class ="lineno "> 73</ span > </ div >
147+ < div class ="line "> < span class ="lineno "> 74</ span > pthread_mutex_unlock(&g_printBufferMutex);</ div >
148+ < div class ="line "> < span class ="lineno "> 75</ span > sem_post(&g_printFilledSpaceSemaphore);</ div >
149+ < div class ="line "> < span class ="lineno "> 76</ span > }</ div >
150+ < div class ="line "> < span class ="lineno "> 77</ span > pthread_cleanup_pop(1);</ div >
151+ < div class ="line "> < span class ="lineno "> 78</ span > pthread_cleanup_pop(1);</ div >
152+ < div class ="line "> < span class ="lineno "> 79</ span > }</ div >
153+ < div class ="ttc " id ="acputracker_8c_html_a2b8f2341417ff6536dcfd85113bd3a5d "> < div class ="ttname "> < a href ="cputracker_8c.html#a2b8f2341417ff6536dcfd85113bd3a5d "> get_item_from_print_buffer</ a > </ div > < div class ="ttdeci "> unsigned long * get_item_from_print_buffer(void)</ div > < div class ="ttdoc "> Function getting item from print buffer.</ div > < div class ="ttdef "> < b > Definition:</ b > < a href ="cputracker_8c_source.html#l00079 "> cputracker.c:79</ a > </ div > </ div >
154+ < div class ="ttc " id ="acputracker_8c_html_a6d7b4993bb9144e4cab9f9c7420c996a "> < div class ="ttname "> < a href ="cputracker_8c.html#a6d7b4993bb9144e4cab9f9c7420c996a "> get_item_from_data_buffer</ a > </ div > < div class ="ttdeci "> struct proc_stat * get_item_from_data_buffer(void)</ div > < div class ="ttdoc "> Function getting item from data buffer.</ div > < div class ="ttdef "> < b > Definition:</ b > < a href ="cputracker_8c_source.html#l00069 "> cputracker.c:69</ a > </ div > </ div >
151155< div class ="ttc " id ="acputracker_8c_html_ac99b6069bf629214ce6258902739d613 "> < div class ="ttname "> < a href ="cputracker_8c.html#ac99b6069bf629214ce6258902739d613 "> notify_watchdog</ a > </ div > < div class ="ttdeci "> void notify_watchdog(int id)</ div > < div class ="ttdoc "> Notify the watchdog that thread is alive.</ div > < div class ="ttdef "> < b > Definition:</ b > < a href ="cputracker_8c_source.html#l00089 "> cputracker.c:89</ a > </ div > </ div >
152156< div class ="ttc " id ="astructproc__stat_html "> < div class ="ttname "> < a href ="structproc__stat.html "> proc_stat</ a > </ div > < div class ="ttdoc "> Struct for /proc/stats info.</ div > < div class ="ttdef "> < b > Definition:</ b > < a href ="cputracker_8h_source.html#l00030 "> cputracker.h:30</ a > </ div > </ div >
153157</ div > <!-- fragment -->
0 commit comments