Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
htop
Commits
f585fc98
Commit
f585fc98
authored
Aug 27, 2015
by
Hisham Muhammad
Browse files
Merge pull request #208 from eworm-de/dynamic-unit
Dynamic unit
parents
79356dc1
cf47f4fc
Changes
5
Hide whitespace changes
Inline
Side-by-side
MemoryMeter.c
View file @
f585fc98
...
...
@@ -25,29 +25,32 @@ int MemoryMeter_attributes[] = {
};
static
void
MemoryMeter_setValues
(
Meter
*
this
,
char
*
buffer
,
int
size
)
{
int
written
;
Platform_setMemoryValues
(
this
);
snprintf
(
buffer
,
size
,
"%ld/%ldM"
,
(
long
int
)
this
->
values
[
0
]
/
1024
,
(
long
int
)
this
->
total
/
1024
);
written
=
Meter_humanUnit
(
buffer
,
this
->
values
[
0
],
size
);
buffer
+=
written
;
if
((
size
-=
written
)
>
0
)
{
*
buffer
++
=
'/'
;
size
--
;
Meter_humanUnit
(
buffer
,
this
->
total
,
size
);
}
}
static
void
MemoryMeter_display
(
Object
*
cast
,
RichString
*
out
)
{
char
buffer
[
50
];
Meter
*
this
=
(
Meter
*
)
cast
;
int
k
=
1024
;
const
char
*
format
=
"%ldM "
;
long
int
totalMem
=
this
->
total
/
k
;
long
int
usedMem
=
this
->
values
[
0
]
/
k
;
long
int
buffersMem
=
this
->
values
[
1
]
/
k
;
long
int
cachedMem
=
this
->
values
[
2
]
/
k
;
RichString_write
(
out
,
CRT_colors
[
METER_TEXT
],
":"
);
sprintf
(
buffer
,
format
,
total
Mem
);
Meter_humanUnit
(
buffer
,
this
->
total
,
50
);
RichString_append
(
out
,
CRT_colors
[
METER_VALUE
],
buffer
);
sprintf
(
buffer
,
format
,
usedMem
);
RichString_append
(
out
,
CRT_colors
[
METER_TEXT
],
"used:"
);
Meter_humanUnit
(
buffer
,
this
->
values
[
0
],
50
);
RichString_append
(
out
,
CRT_colors
[
METER_TEXT
],
"
used:"
);
RichString_append
(
out
,
CRT_colors
[
MEMORY_USED
],
buffer
);
sprintf
(
buffer
,
format
,
buffersMem
);
RichString_append
(
out
,
CRT_colors
[
METER_TEXT
],
"buffers:"
);
Meter_humanUnit
(
buffer
,
this
->
values
[
1
],
50
);
RichString_append
(
out
,
CRT_colors
[
METER_TEXT
],
"
buffers:"
);
RichString_append
(
out
,
CRT_colors
[
MEMORY_BUFFERS_TEXT
],
buffer
);
sprintf
(
buffer
,
format
,
cachedMem
);
RichString_append
(
out
,
CRT_colors
[
METER_TEXT
],
"cache:"
);
Meter_humanUnit
(
buffer
,
this
->
values
[
2
],
50
);
RichString_append
(
out
,
CRT_colors
[
METER_TEXT
],
"
cache:"
);
RichString_append
(
out
,
CRT_colors
[
MEMORY_CACHE
],
buffer
);
}
...
...
Meter.c
View file @
f585fc98
...
...
@@ -141,6 +141,34 @@ Meter* Meter_new(struct ProcessList_* pl, int param, MeterClass* type) {
return
this
;
}
int
Meter_humanUnit
(
char
*
buffer
,
unsigned
long
int
value
,
int
size
)
{
const
char
*
prefix
=
"KMGTPEZY"
;
unsigned
long
int
powi
=
1
;
unsigned
int
written
,
powj
=
1
,
precision
=
2
;
for
(;;)
{
if
(
value
/
1024
<
powi
)
break
;
if
(
prefix
[
1
]
==
0
)
break
;
powi
*=
1024
;
++
prefix
;
}
for
(;
precision
>
0
;
precision
--
)
{
powj
*=
10
;
if
(
value
/
powi
<
powj
)
break
;
}
written
=
snprintf
(
buffer
,
size
,
"%.*f%c"
,
precision
,
(
double
)
value
/
powi
,
*
prefix
);
return
written
;
}
void
Meter_delete
(
Object
*
cast
)
{
if
(
!
cast
)
return
;
...
...
Meter.h
View file @
f585fc98
...
...
@@ -105,6 +105,8 @@ extern MeterClass Meter_class;
Meter
*
Meter_new
(
struct
ProcessList_
*
pl
,
int
param
,
MeterClass
*
type
);
int
Meter_humanUnit
(
char
*
buffer
,
unsigned
long
int
value
,
int
size
);
void
Meter_delete
(
Object
*
cast
);
void
Meter_setCaption
(
Meter
*
this
,
const
char
*
caption
);
...
...
SwapMeter.c
View file @
f585fc98
...
...
@@ -20,34 +20,31 @@ in the source distribution for its full text.
#include "Meter.h"
}*/
#define KILOBYTE 1
#define MEGABYTE 1024
#define GIGABYTE 1048576
int
SwapMeter_attributes
[]
=
{
SWAP
};
/* NOTE: Value is in kilobytes */
static
void
SwapMeter_humanNumber
(
char
*
buffer
,
const
long
int
*
value
)
{
sprintf
(
buffer
,
"%ldM "
,
*
value
/
MEGABYTE
);
}
static
void
SwapMeter_setValues
(
Meter
*
this
,
char
*
buffer
,
int
len
)
{
static
void
SwapMeter_setValues
(
Meter
*
this
,
char
*
buffer
,
int
size
)
{
int
written
;
Platform_setSwapValues
(
this
);
snprintf
(
buffer
,
len
,
"%ld/%ldM"
,
(
long
int
)
this
->
values
[
0
]
/
MEGABYTE
,
(
long
int
)
this
->
total
/
MEGABYTE
);
written
=
Meter_humanUnit
(
buffer
,
this
->
values
[
0
],
size
);
buffer
+=
written
;
if
((
size
-=
written
)
>
0
)
{
*
buffer
++
=
'/'
;
size
--
;
Meter_humanUnit
(
buffer
,
this
->
total
,
size
);
}
}
static
void
SwapMeter_display
(
Object
*
cast
,
RichString
*
out
)
{
char
buffer
[
50
];
Meter
*
this
=
(
Meter
*
)
cast
;
long
int
swap
=
(
long
int
)
this
->
values
[
0
];
long
int
total
=
(
long
int
)
this
->
total
;
RichString_write
(
out
,
CRT_colors
[
METER_TEXT
],
":"
);
Swap
Meter_human
Number
(
buffer
,
&
total
);
Meter_human
Unit
(
buffer
,
this
->
total
,
50
);
RichString_append
(
out
,
CRT_colors
[
METER_VALUE
],
buffer
);
Swap
Meter_human
Number
(
buffer
,
&
swap
);
RichString_append
(
out
,
CRT_colors
[
METER_TEXT
],
"used:"
);
Meter_human
Unit
(
buffer
,
this
->
values
[
0
],
50
);
RichString_append
(
out
,
CRT_colors
[
METER_TEXT
],
"
used:"
);
RichString_append
(
out
,
CRT_colors
[
METER_VALUE
],
buffer
);
}
...
...
SwapMeter.h
View file @
f585fc98
...
...
@@ -11,13 +11,8 @@ in the source distribution for its full text.
#include "Meter.h"
#define KILOBYTE 1
#define MEGABYTE 1024
#define GIGABYTE 1048576
extern
int
SwapMeter_attributes
[];
/* NOTE: Value is in kilobytes */
extern
MeterClass
SwapMeter_class
;
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment