Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
P
proview
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Esteban Blanc
proview
Commits
e99e56fa
Commit
e99e56fa
authored
Oct 13, 2009
by
Claes Sjofors
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Sev, bugfixes, console logging, status message and improved errorhandling
parent
e3d38276
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
200 additions
and
22 deletions
+200
-22
sev/exe/sev_server/src/sev_server.cpp
sev/exe/sev_server/src/sev_server.cpp
+59
-4
sev/exe/sev_server/src/sev_server.h
sev/exe/sev_server/src/sev_server.h
+3
-1
sev/exe/sev_xtt/src/xtt_tbl.cpp
sev/exe/sev_xtt/src/xtt_tbl.cpp
+2
-2
sev/lib/sev/src/sev_db.h
sev/lib/sev/src/sev_db.h
+5
-2
sev/lib/sev/src/sev_dbms.cpp
sev/lib/sev/src/sev_dbms.cpp
+20
-5
sev/lib/sev/src/sev_dbms.h
sev/lib/sev/src/sev_dbms.h
+2
-1
src/exe/rt_sevhistmon/src/rt_sevhistmon.cpp
src/exe/rt_sevhistmon/src/rt_sevhistmon.cpp
+71
-1
src/exe/rt_sevhistmon/src/rt_sevhistmon.h
src/exe/rt_sevhistmon/src/rt_sevhistmon.h
+5
-1
src/lib/rt/src/rt_sev_net.h
src/lib/rt/src/rt_sev_net.h
+8
-1
src/lib/rt/src/rt_sevcli.c
src/lib/rt/src/rt_sevcli.c
+10
-3
xtt/lib/xtt/src/xtt_sevhist.cpp
xtt/lib/xtt/src/xtt_sevhist.cpp
+13
-1
xtt/lib/xtt/src/xtt_sevhist.h
xtt/lib/xtt/src/xtt_sevhist.h
+2
-0
No files found.
sev/exe/sev_server/src/sev_server.cpp
View file @
e99e56fa
...
@@ -21,6 +21,7 @@
...
@@ -21,6 +21,7 @@
#include "pwr.h"
#include "pwr.h"
#include "co_cdh.h"
#include "co_dcli.h"
#include "co_dcli.h"
#include "co_time.h"
#include "co_time.h"
#include "co_error.h"
#include "co_error.h"
...
@@ -39,6 +40,7 @@
...
@@ -39,6 +40,7 @@
#define sev_cGarbageInterval 120
#define sev_cGarbageInterval 120
int
sev_server
::
init
(
int
noneth
)
int
sev_server
::
init
(
int
noneth
)
{
{
qcom_sNode
node
;
qcom_sNode
node
;
...
@@ -50,9 +52,13 @@ int sev_server::init( int noneth)
...
@@ -50,9 +52,13 @@ int sev_server::init( int noneth)
pwr_tFileName
envname
;
pwr_tFileName
envname
;
char
socket
[
200
];
char
socket
[
200
];
m_server_status
=
PWR__SRVSTARTUP
;
qcom_Init
(
&
m_sts
,
&
aid
,
"sev_server"
);
qcom_Init
(
&
m_sts
,
&
aid
,
"sev_server"
);
if
(
EVEN
(
m_sts
))
throw
co_error
(
m_sts
);
if
(
EVEN
(
m_sts
))
throw
co_error
(
m_sts
);
errh_Init
(
"sev_server"
,
(
errh_eAnix
)
0
);
m_noneth
=
noneth
;
m_noneth
=
noneth
;
if
(
!
m_noneth
)
{
if
(
!
m_noneth
)
{
// Check server config object
// Check server config object
...
@@ -81,19 +87,21 @@ int sev_server::init( int noneth)
...
@@ -81,19 +87,21 @@ int sev_server::init( int noneth)
env
->
open
(
envname
);
env
->
open
(
envname
);
if
(
!
env
->
createDb
())
{
if
(
!
env
->
createDb
())
{
errh_Fatal
(
"Failed to create to database
"
);
errh_Fatal
(
"Failed to create to database
'%s'"
,
sev_dbms_env
::
dbName
()
);
exit
(
0
);
exit
(
0
);
}
}
}
}
else
{
else
{
if
(
!
env
->
openDb
())
{
if
(
!
env
->
openDb
())
{
errh_Fatal
(
"Failed to connect to database
"
);
errh_Fatal
(
"Failed to connect to database
'%s'"
,
sev_dbms_env
::
dbName
()
);
exit
(
0
);
exit
(
0
);
}
}
}
}
m_db
=
new
sev_dbms
(
env
);
m_db
=
new
sev_dbms
(
env
);
errh_Info
(
"Database opened '%s'"
,
sev_dbms_env
::
dbName
());
m_db
->
get_items
(
&
m_sts
);
m_db
->
get_items
(
&
m_sts
);
for
(
unsigned
int
i
=
0
;
i
<
m_db
->
m_items
.
size
();
i
++
)
{
for
(
unsigned
int
i
=
0
;
i
<
m_db
->
m_items
.
size
();
i
++
)
{
...
@@ -153,7 +161,9 @@ int sev_server::connect()
...
@@ -153,7 +161,9 @@ int sev_server::connect()
qcom_sQid
tgt
;
qcom_sQid
tgt
;
qcom_sPut
put
;
qcom_sPut
put
;
pwr_tStatus
sts
,
lsts
;
pwr_tStatus
sts
,
lsts
;
// Wait for qmon to start
sleep
(
5
);
for
(
unsigned
int
i
=
0
;
i
<
m_nodes
.
size
();
i
++
)
{
for
(
unsigned
int
i
=
0
;
i
<
m_nodes
.
size
();
i
++
)
{
tgt
.
nid
=
m_nodes
[
i
].
nid
;
tgt
.
nid
=
m_nodes
[
i
].
nid
;
...
@@ -173,7 +183,10 @@ int sev_server::connect()
...
@@ -173,7 +183,10 @@ int sev_server::connect()
if
(
!
qcom_Put
(
&
sts
,
&
tgt
,
&
put
))
{
if
(
!
qcom_Put
(
&
sts
,
&
tgt
,
&
put
))
{
qcom_Free
(
&
sts
,
put
.
data
);
qcom_Free
(
&
sts
,
put
.
data
);
errh_Info
(
"No connection to %s (%s)"
,
m_nodes
[
i
].
name
,
cdh_NodeIdToString
(
0
,
m_nodes
[
i
].
nid
,
0
,
0
));
}
}
else
errh_Info
(
"Connect sent to %s (%s)"
,
m_nodes
[
i
].
name
,
cdh_NodeIdToString
(
0
,
m_nodes
[
i
].
nid
,
0
,
0
));
}
}
return
1
;
return
1
;
...
@@ -274,6 +287,41 @@ int sev_server::send_itemlist( qcom_sQid tgt)
...
@@ -274,6 +287,41 @@ int sev_server::send_itemlist( qcom_sQid tgt)
return
1
;
return
1
;
}
}
int
sev_server
::
send_server_status
(
qcom_sQid
tgt
)
{
qcom_sPut
put
;
pwr_tStatus
sts
,
lsts
;
put
.
size
=
sizeof
(
sev_sMsgServerStatus
);
put
.
data
=
qcom_Alloc
(
&
lsts
,
put
.
size
);
((
sev_sMsgServerStatus
*
)
put
.
data
)
->
Type
=
sev_eMsgType_ServerStatus
;
sts
=
m_server_status
;
for
(
unsigned
int
i
=
0
;
i
<
m_db
->
m_items
.
size
();
i
++
)
{
if
(
m_db
->
m_items
[
i
].
deleted
||
m_db
->
m_items
[
i
].
status
==
0
)
continue
;
if
(
errh_Severity
(
m_db
->
m_items
[
i
].
status
)
>
errh_Severity
(
sts
))
sts
=
m_db
->
m_items
[
i
].
status
;
}
((
sev_sMsgServerStatus
*
)
put
.
data
)
->
Status
=
sts
;
put
.
reply
.
nid
=
m_nodes
[
0
].
nid
;
put
.
reply
.
qix
=
sev_eProcSevServer
;
put
.
type
.
b
=
(
qcom_eBtype
)
sev_cMsgClass
;
put
.
type
.
s
=
(
qcom_eStype
)
sev_eMsgType_ServerStatus
;
put
.
msg_id
=
m_msg_id
++
;
if
(
!
qcom_Put
(
&
sts
,
&
tgt
,
&
put
))
{
qcom_Free
(
&
sts
,
put
.
data
);
return
0
;
}
return
1
;
}
int
sev_server
::
delete_item
(
qcom_sQid
tgt
,
sev_sMsgHistItemDelete
*
rmsg
)
int
sev_server
::
delete_item
(
qcom_sQid
tgt
,
sev_sMsgHistItemDelete
*
rmsg
)
{
{
qcom_sPut
put
;
qcom_sPut
put
;
...
@@ -320,6 +368,8 @@ int sev_server::mainloop()
...
@@ -320,6 +368,8 @@ int sev_server::mainloop()
time_GetTime
(
&
currenttime
);
time_GetTime
(
&
currenttime
);
time_Aadd
(
&
next_garco
,
&
currenttime
,
&
garco_interval
);
time_Aadd
(
&
next_garco
,
&
currenttime
,
&
garco_interval
);
m_server_status
=
PWR__SRUN
;
for
(;;)
{
for
(;;)
{
memset
(
&
get
,
0
,
sizeof
(
get
));
memset
(
&
get
,
0
,
sizeof
(
get
));
mp
=
qcom_Get
(
&
sts
,
&
qid
,
&
get
,
tmo
);
mp
=
qcom_Get
(
&
sts
,
&
qid
,
&
get
,
tmo
);
...
@@ -336,9 +386,11 @@ int sev_server::mainloop()
...
@@ -336,9 +386,11 @@ int sev_server::mainloop()
case
sev_cMsgClass
:
case
sev_cMsgClass
:
switch
(
get
.
type
.
s
)
{
switch
(
get
.
type
.
s
)
{
case
sev_eMsgType_NodeUp
:
case
sev_eMsgType_NodeUp
:
errh_Info
(
"Node up %s"
,
cdh_NodeIdToString
(
0
,
get
.
reply
.
nid
,
0
,
0
));
request_items
(
get
.
reply
.
nid
);
request_items
(
get
.
reply
.
nid
);
break
;
break
;
case
sev_eMsgType_HistItems
:
case
sev_eMsgType_HistItems
:
errh_Info
(
"Itemlist received %s"
,
cdh_NodeIdToString
(
0
,
get
.
reply
.
nid
,
0
,
0
));
check_histitems
(
(
sev_sMsgHistItems
*
)
mp
,
get
.
size
);
check_histitems
(
(
sev_sMsgHistItems
*
)
mp
,
get
.
size
);
break
;
break
;
case
sev_eMsgType_HistDataStore
:
case
sev_eMsgType_HistDataStore
:
...
@@ -353,6 +405,9 @@ int sev_server::mainloop()
...
@@ -353,6 +405,9 @@ int sev_server::mainloop()
case
sev_eMsgType_HistItemDelete
:
case
sev_eMsgType_HistItemDelete
:
delete_item
(
get
.
reply
,
(
sev_sMsgHistItemDelete
*
)
mp
);
delete_item
(
get
.
reply
,
(
sev_sMsgHistItemDelete
*
)
mp
);
break
;
break
;
case
sev_eMsgType_ServerStatusRequest
:
send_server_status
(
get
.
reply
);
break
;
default:
;
default:
;
}
}
break
;
break
;
...
@@ -472,7 +527,7 @@ int sev_server::send_histdata( qcom_sQid tgt, sev_sMsgHistDataGetRequest *rmsg,
...
@@ -472,7 +527,7 @@ int sev_server::send_histdata( qcom_sQid tgt, sev_sMsgHistDataGetRequest *rmsg,
endtime
=
net_NetTimeToTime
(
&
rmsg
->
EndTime
);
endtime
=
net_NetTimeToTime
(
&
rmsg
->
EndTime
);
m_db
->
get_values
(
&
m_sts
,
rmsg
->
Oid
,
m_db
->
m_items
[
idx
].
options
,
m_db
->
m_items
[
idx
].
deadband
,
m_db
->
get_values
(
&
m_sts
,
rmsg
->
Oid
,
m_db
->
m_items
[
idx
].
options
,
m_db
->
m_items
[
idx
].
deadband
,
rmsg
->
AName
,
m_db
->
m_items
[
idx
].
attr
[
0
].
type
,
m_db
->
m_items
[
idx
].
attr
[
0
].
size
,
rmsg
->
AName
,
m_db
->
m_items
[
idx
].
attr
[
0
].
type
,
m_db
->
m_items
[
idx
].
attr
[
0
].
size
,
m_db
->
m_items
[
idx
].
scantime
,
m_db
->
m_items
[
idx
].
scantime
,
&
m_db
->
m_items
[
idx
].
creatime
,
&
starttime
,
&
endtime
,
rmsg
->
NumPoints
,
&
tbuf
,
&
vbuf
,
&
rows
);
&
starttime
,
&
endtime
,
rmsg
->
NumPoints
,
&
tbuf
,
&
vbuf
,
&
rows
);
}
}
if
(
ODD
(
m_sts
))
if
(
ODD
(
m_sts
))
...
...
sev/exe/sev_server/src/sev_server.h
View file @
e99e56fa
...
@@ -68,12 +68,13 @@ class sev_item_key {
...
@@ -68,12 +68,13 @@ class sev_item_key {
class
sev_server
{
class
sev_server
{
public:
public:
sev_server
()
:
m_msg_id
(
0
)
{}
sev_server
()
:
m_
server_status
(
0
),
m_
msg_id
(
0
)
{}
typedef
map
<
sev_refid
,
unsigned
int
>::
iterator
iterator_refid
;
typedef
map
<
sev_refid
,
unsigned
int
>::
iterator
iterator_refid
;
typedef
map
<
sev_item_key
,
unsigned
int
>::
iterator
iterator_item_key
;
typedef
map
<
sev_item_key
,
unsigned
int
>::
iterator
iterator_item_key
;
pwr_tStatus
m_sts
;
pwr_tStatus
m_sts
;
pwr_tStatus
m_server_status
;
vector
<
sev_node
>
m_nodes
;
vector
<
sev_node
>
m_nodes
;
map
<
sev_refid
,
unsigned
int
>
m_refid
;
map
<
sev_refid
,
unsigned
int
>
m_refid
;
map
<
sev_item_key
,
unsigned
int
>
m_item_key
;
map
<
sev_item_key
,
unsigned
int
>
m_item_key
;
...
@@ -89,6 +90,7 @@ class sev_server {
...
@@ -89,6 +90,7 @@ class sev_server {
int
receive_histdata
(
sev_sMsgHistDataStore
*
msg
,
unsigned
int
size
);
int
receive_histdata
(
sev_sMsgHistDataStore
*
msg
,
unsigned
int
size
);
int
send_histdata
(
qcom_sQid
tgt
,
sev_sMsgHistDataGetRequest
*
msg
,
unsigned
int
size
);
int
send_histdata
(
qcom_sQid
tgt
,
sev_sMsgHistDataGetRequest
*
msg
,
unsigned
int
size
);
int
send_itemlist
(
qcom_sQid
tgt
);
int
send_itemlist
(
qcom_sQid
tgt
);
int
send_server_status
(
qcom_sQid
tgt
);
int
delete_item
(
qcom_sQid
tgt
,
sev_sMsgHistItemDelete
*
rmsg
);
int
delete_item
(
qcom_sQid
tgt
,
sev_sMsgHistItemDelete
*
rmsg
);
void
garbage_collector
();
void
garbage_collector
();
};
};
...
...
sev/exe/sev_xtt/src/xtt_tbl.cpp
View file @
e99e56fa
...
@@ -48,9 +48,9 @@ XttTbl::~XttTbl()
...
@@ -48,9 +48,9 @@ XttTbl::~XttTbl()
}
}
XttTbl
::
XttTbl
(
void
*
xn_parent_ctx
,
sevcli_tCtx
xn_sevcli
)
:
XttTbl
::
XttTbl
(
void
*
xn_parent_ctx
,
sevcli_tCtx
xn_sevcli
)
:
parent_ctx
(
xn_parent_ctx
),
sevcli
(
xn_sevcli
),
command_open
(
0
),
close_cb
(
0
),
parent_ctx
(
xn_parent_ctx
),
sevcli
(
xn_sevcli
),
co
login
(
0
),
co
mmand_open
(
0
),
close_cb
(
0
),
base_priv
(
pwr_mPrv_System
),
priv
(
pwr_mPrv_System
),
verify
(
0
),
ccm_func_registred
(
0
),
base_priv
(
pwr_mPrv_System
),
priv
(
pwr_mPrv_System
),
verify
(
0
),
ccm_func_registred
(
0
),
quiet
(
0
)
wow
(
0
),
quiet
(
0
)
{
{
char
default_priv
[
80
];
char
default_priv
[
80
];
...
...
sev/lib/sev/src/sev_db.h
View file @
e99e56fa
...
@@ -38,7 +38,8 @@ class sev_attr {
...
@@ -38,7 +38,8 @@ class sev_attr {
class
sev_item
{
class
sev_item
{
public:
public:
sev_item
()
:
deadband_active
(
0
),
last_id
(
0
),
first_storage
(
1
),
deleted
(
0
)
sev_item
()
:
deadband_active
(
0
),
last_id
(
0
),
first_storage
(
1
),
status
(
0
),
logged_status
(
0
),
deleted
(
0
)
{
memset
(
old_value
,
0
,
sizeof
(
old_value
));}
{
memset
(
old_value
,
0
,
sizeof
(
old_value
));}
unsigned
int
id
;
unsigned
int
id
;
char
tablename
[
256
];
char
tablename
[
256
];
...
@@ -58,6 +59,8 @@ class sev_item {
...
@@ -58,6 +59,8 @@ class sev_item {
int
first_storage
;
int
first_storage
;
unsigned
int
attrnum
;
unsigned
int
attrnum
;
sev_attr
attr
[
1
];
sev_attr
attr
[
1
];
pwr_tStatus
status
;
pwr_tStatus
logged_status
;
int
deleted
;
int
deleted
;
};
};
...
@@ -83,7 +86,7 @@ class sev_db {
...
@@ -83,7 +86,7 @@ class sev_db {
pwr_tTime
time
,
void
*
buf
,
unsigned
int
size
)
{
return
0
;}
pwr_tTime
time
,
void
*
buf
,
unsigned
int
size
)
{
return
0
;}
virtual
int
get_values
(
pwr_tStatus
*
sts
,
pwr_tOid
oid
,
pwr_tMask
options
,
float
deadband
,
virtual
int
get_values
(
pwr_tStatus
*
sts
,
pwr_tOid
oid
,
pwr_tMask
options
,
float
deadband
,
char
*
aname
,
pwr_eType
type
,
char
*
aname
,
pwr_eType
type
,
unsigned
int
size
,
pwr_tFloat32
scantime
,
pwr_tTime
*
starttime
,
unsigned
int
size
,
pwr_tFloat32
scantime
,
pwr_tTime
*
creatime
,
pwr_tTime
*
starttime
,
pwr_tTime
*
endtime
,
int
maxsize
,
pwr_tTime
**
tbuf
,
void
**
vbuf
,
pwr_tTime
*
endtime
,
int
maxsize
,
pwr_tTime
**
tbuf
,
void
**
vbuf
,
unsigned
int
*
bsize
)
{
return
0
;}
unsigned
int
*
bsize
)
{
return
0
;}
virtual
int
get_items
(
pwr_tStatus
*
sts
)
{
return
0
;}
virtual
int
get_items
(
pwr_tStatus
*
sts
)
{
return
0
;}
...
...
sev/lib/sev/src/sev_dbms.cpp
View file @
e99e56fa
...
@@ -35,6 +35,7 @@
...
@@ -35,6 +35,7 @@
#include "rt_load.h"
#include "rt_load.h"
#include "sev_dbms.h"
#include "sev_dbms.h"
#include "rt_sev_msg.h"
#include "rt_sev_msg.h"
#include "rt_errh.h"
char
sev_dbms_env
::
m_systemName
[
40
];
char
sev_dbms_env
::
m_systemName
[
40
];
...
@@ -833,8 +834,14 @@ int sev_dbms::store_value( pwr_tStatus *sts, int item_idx, int attr_idx,
...
@@ -833,8 +834,14 @@ int sev_dbms::store_value( pwr_tStatus *sts, int item_idx, int attr_idx,
}
}
int
rc
=
mysql_query
(
m_env
->
con
(),
query
);
int
rc
=
mysql_query
(
m_env
->
con
(),
query
);
if
(
rc
)
{
if
(
rc
)
{
printf
(
"Store value: %s
\n
"
,
mysql_error
(
m_env
->
con
())
);
// printf( "Store value: %s \"%s\"\n", mysql_error(m_env->con()), query
);
*
sts
=
SEV__DBERROR
;
*
sts
=
SEV__DBERROR
;
m_items
[
item_idx
].
status
=
*
sts
;
if
(
m_items
[
item_idx
].
status
!=
m_items
[
item_idx
].
logged_status
)
{
m_items
[
item_idx
].
logged_status
=
m_items
[
item_idx
].
status
;
errh_Error
(
"Database store error: %s, table: %s object: %s"
,
mysql_error
(
m_env
->
con
()),
m_items
[
item_idx
].
tablename
,
m_items
[
item_idx
].
oname
);
}
return
0
;
return
0
;
}
}
if
(
m_items
[
item_idx
].
options
&
pwr_mSevOptionsMask_ReadOptimized
)
if
(
m_items
[
item_idx
].
options
&
pwr_mSevOptionsMask_ReadOptimized
)
...
@@ -872,19 +879,27 @@ int sev_dbms::store_value( pwr_tStatus *sts, int item_idx, int attr_idx,
...
@@ -872,19 +879,27 @@ int sev_dbms::store_value( pwr_tStatus *sts, int item_idx, int attr_idx,
int
rc
=
mysql_query
(
m_env
->
con
(),
query
);
int
rc
=
mysql_query
(
m_env
->
con
(),
query
);
if
(
rc
)
{
if
(
rc
)
{
printf
(
"Update value: %s
\n
"
,
mysql_error
(
m_env
->
con
()));
//
printf( "Update value: %s\n", mysql_error(m_env->con()));
*
sts
=
SEV__DBERROR
;
*
sts
=
SEV__DBERROR
;
m_items
[
item_idx
].
status
=
*
sts
;
if
(
m_items
[
item_idx
].
status
!=
m_items
[
item_idx
].
logged_status
)
{
m_items
[
item_idx
].
logged_status
=
m_items
[
item_idx
].
status
;
errh_Error
(
"Database update error: %s, table: %s object: %s"
,
mysql_error
(
m_env
->
con
()),
m_items
[
item_idx
].
tablename
,
m_items
[
item_idx
].
oname
);
}
return
0
;
return
0
;
}
}
}
}
*
sts
=
SEV__SUCCESS
;
*
sts
=
SEV__SUCCESS
;
m_items
[
item_idx
].
status
=
*
sts
;
m_items
[
item_idx
].
logged_status
=
1
;
return
1
;
return
1
;
}
}
int
sev_dbms
::
get_values
(
pwr_tStatus
*
sts
,
pwr_tOid
oid
,
pwr_tMask
options
,
float
deadband
,
int
sev_dbms
::
get_values
(
pwr_tStatus
*
sts
,
pwr_tOid
oid
,
pwr_tMask
options
,
float
deadband
,
char
*
aname
,
pwr_eType
type
,
char
*
aname
,
pwr_eType
type
,
unsigned
int
size
,
pwr_tFloat32
scantime
,
unsigned
int
size
,
pwr_tFloat32
scantime
,
pwr_tTime
*
creatime
,
pwr_tTime
*
starttime
,
pwr_tTime
*
endtime
,
pwr_tTime
*
starttime
,
pwr_tTime
*
endtime
,
int
maxsize
,
pwr_tTime
**
tbuf
,
void
**
vbuf
,
unsigned
int
*
bsize
)
int
maxsize
,
pwr_tTime
**
tbuf
,
void
**
vbuf
,
unsigned
int
*
bsize
)
{
{
...
@@ -941,8 +956,8 @@ int sev_dbms::get_values( pwr_tStatus *sts, pwr_tOid oid, pwr_tMask options, flo
...
@@ -941,8 +956,8 @@ int sev_dbms::get_values( pwr_tStatus *sts, pwr_tOid oid, pwr_tMask options, flo
timestr_to_time
(
row
[
11
],
&
create_time
);
timestr_to_time
(
row
[
11
],
&
create_time
);
timestr_to_time
(
row
[
12
],
&
update_time
);
timestr_to_time
(
row
[
12
],
&
update_time
);
if
(
time_Acomp
(
&
create_
time
,
&
stime
)
==
1
)
if
(
time_Acomp
(
crea
time
,
&
stime
)
==
1
)
stime
=
create_
time
;
stime
=
*
crea
time
;
if
(
time_Acomp
(
&
etime
,
&
update_time
)
==
1
)
if
(
time_Acomp
(
&
etime
,
&
update_time
)
==
1
)
etime
=
update_time
;
etime
=
update_time
;
...
...
sev/lib/sev/src/sev_dbms.h
View file @
e99e56fa
...
@@ -117,7 +117,8 @@ class sev_dbms : public sev_db {
...
@@ -117,7 +117,8 @@ class sev_dbms : public sev_db {
int
store_value
(
pwr_tStatus
*
sts
,
int
item_idx
,
int
attr_idx
,
int
store_value
(
pwr_tStatus
*
sts
,
int
item_idx
,
int
attr_idx
,
pwr_tTime
time
,
void
*
buf
,
unsigned
int
size
);
pwr_tTime
time
,
void
*
buf
,
unsigned
int
size
);
int
get_values
(
pwr_tStatus
*
sts
,
pwr_tOid
oid
,
pwr_tMask
options
,
float
deadband
,
char
*
aname
,
int
get_values
(
pwr_tStatus
*
sts
,
pwr_tOid
oid
,
pwr_tMask
options
,
float
deadband
,
char
*
aname
,
pwr_eType
type
,
unsigned
int
size
,
pwr_tFloat32
scantime
,
pwr_tTime
*
starttime
,
pwr_eType
type
,
unsigned
int
size
,
pwr_tFloat32
scantime
,
pwr_tTime
*
creatime
,
pwr_tTime
*
starttime
,
pwr_tTime
*
endtime
,
int
maxsize
,
pwr_tTime
**
tbuf
,
void
**
vbuf
,
unsigned
int
*
bsize
);
pwr_tTime
*
endtime
,
int
maxsize
,
pwr_tTime
**
tbuf
,
void
**
vbuf
,
unsigned
int
*
bsize
);
int
delete_old_data
(
pwr_tStatus
*
sts
,
pwr_tOid
oid
,
char
*
aname
,
int
delete_old_data
(
pwr_tStatus
*
sts
,
pwr_tOid
oid
,
char
*
aname
,
pwr_tMask
options
,
pwr_tTime
limit
);
pwr_tMask
options
,
pwr_tTime
limit
);
...
...
src/exe/rt_sevhistmon/src/rt_sevhistmon.cpp
View file @
e99e56fa
...
@@ -29,8 +29,8 @@
...
@@ -29,8 +29,8 @@
#include "rt_qcom_msg.h"
#include "rt_qcom_msg.h"
#include "rt_ini_event.h"
#include "rt_ini_event.h"
#include "rt_errh.h"
#include "rt_errh.h"
#include "rt_sevhistmon.h"
#include "rt_sev_net.h"
#include "rt_sev_net.h"
#include "rt_sevhistmon.h"
#include "rt_sev_msg.h"
#include "rt_sev_msg.h"
#include "rt_pwr_msg.h"
#include "rt_pwr_msg.h"
...
@@ -357,6 +357,12 @@ void rt_sevhistmon::set_status()
...
@@ -357,6 +357,12 @@ void rt_sevhistmon::set_status()
{
{
pwr_tStatus
sts
=
m_server_status
;
pwr_tStatus
sts
=
m_server_status
;
for
(
unsigned
int
i
=
0
;
i
<
m_nodes
.
size
();
i
++
)
{
if
(
m_nodes
[
i
].
connected
&&
m_nodes
[
i
].
status
!=
0
&&
errh_Severity
(
m_nodes
[
i
].
status
)
>
errh_Severity
(
sts
))
sts
=
m_nodes
[
i
].
status
;
}
for
(
unsigned
int
i
=
0
;
i
<
m_hs
.
size
();
i
++
)
{
for
(
unsigned
int
i
=
0
;
i
<
m_hs
.
size
();
i
++
)
{
if
(
EVEN
(
m_hs
[
i
].
threadp
->
Status
)
&&
if
(
EVEN
(
m_hs
[
i
].
threadp
->
Status
)
&&
errh_Severity
(
m_hs
[
i
].
threadp
->
Status
)
>
errh_Severity
(
sts
))
{
errh_Severity
(
m_hs
[
i
].
threadp
->
Status
)
>
errh_Severity
(
sts
))
{
...
@@ -438,6 +444,66 @@ bool rt_sevhistmon::send_connect( pwr_tNid nid, pwr_tStatus *sts)
...
@@ -438,6 +444,66 @@ bool rt_sevhistmon::send_connect( pwr_tNid nid, pwr_tStatus *sts)
return
ODD
(
*
sts
);
return
ODD
(
*
sts
);
}
}
bool
rt_sevhistmon
::
send_server_status_request
(
pwr_tStatus
*
sts
)
{
int
stime
;
float
scantime
=
30
;
pwr_tStatus
send_sts
;
*
sts
=
SEV__SUCCESS
;
stime
=
int
(
scantime
/
m_scantime
+
0.5
);
if
(
!
stime
||
m_loopcnt
%
stime
!=
0
)
return
false
;
for
(
unsigned
int
i
=
0
;
i
<
m_nodes
.
size
();
i
++
)
{
if
(
m_nodes
[
i
].
connected
)
{
send_server_status_request
(
m_nodes
[
i
].
nid
,
&
send_sts
);
if
(
EVEN
(
send_sts
))
*
sts
=
send_sts
;
}
}
return
true
;
}
bool
rt_sevhistmon
::
send_server_status_request
(
pwr_tNid
nid
,
pwr_tStatus
*
sts
)
{
sev_sMsgAny
*
msg
;
qcom_sQid
tgt
;
qcom_sPut
put
;
pwr_tStatus
lsts
;
tgt
.
nid
=
nid
;
tgt
.
qix
=
sev_eProcSevServer
;
put
.
reply
.
nid
=
m_nodes
[
0
].
nid
;
put
.
reply
.
qix
=
sev_eProcSevClient
;
put
.
type
.
b
=
(
qcom_eBtype
)
sev_cMsgClass
;
put
.
type
.
s
=
(
qcom_eStype
)
sev_eMsgType_ServerStatusRequest
;
put
.
msg_id
=
m_msg_id
++
;
put
.
size
=
sizeof
(
*
msg
);
msg
=
(
sev_sMsgAny
*
)
qcom_Alloc
(
&
lsts
,
put
.
size
);
put
.
data
=
msg
;
msg
->
Type
=
sev_eMsgType_NodeUp
;
if
(
!
qcom_Put
(
sts
,
&
tgt
,
&
put
))
{
qcom_Free
(
&
lsts
,
put
.
data
);
}
return
ODD
(
*
sts
);
}
void
rt_sevhistmon
::
receive_server_status
(
sev_sMsgServerStatus
*
msg
,
pwr_tNid
nid
)
{
for
(
unsigned
int
i
=
0
;
i
<
m_nodes
.
size
();
i
++
)
{
if
(
nid
==
m_nodes
[
i
].
nid
)
{
m_nodes
[
i
].
status
=
msg
->
Status
;
break
;
}
}
}
int
rt_sevhistmon
::
send_itemlist
(
pwr_tNid
nid
)
int
rt_sevhistmon
::
send_itemlist
(
pwr_tNid
nid
)
{
{
int
item_cnt
=
0
;
int
item_cnt
=
0
;
...
@@ -560,6 +626,7 @@ int rt_sevhistmon::mainloop()
...
@@ -560,6 +626,7 @@ int rt_sevhistmon::mainloop()
if
(
sts
==
QCOM__TMO
||
!
mp
)
{
if
(
sts
==
QCOM__TMO
||
!
mp
)
{
m_loopcnt
++
;
m_loopcnt
++
;
send_data
();
send_data
();
send_server_status_request
(
&
sts
);
continue
;
continue
;
}
}
...
@@ -570,6 +637,9 @@ int rt_sevhistmon::mainloop()
...
@@ -570,6 +637,9 @@ int rt_sevhistmon::mainloop()
case
sev_eMsgType_HistItemsRequest
:
case
sev_eMsgType_HistItemsRequest
:
send_itemlist
(
get
.
sender
.
nid
);
send_itemlist
(
get
.
sender
.
nid
);
break
;
break
;
case
sev_eMsgType_ServerStatus
:
receive_server_status
(
(
sev_sMsgServerStatus
*
)
mp
,
get
.
sender
.
nid
);
break
;
default:
;
default:
;
}
}
break
;
break
;
...
...
src/exe/rt_sevhistmon/src/rt_sevhistmon.h
View file @
e99e56fa
...
@@ -58,12 +58,13 @@ class sev_sevhistthread {
...
@@ -58,12 +58,13 @@ class sev_sevhistthread {
class
sev_node
{
class
sev_node
{
public:
public:
sev_node
()
:
is_server
(
0
),
connected
(
0
),
ctime
(
0
)
{}
sev_node
()
:
is_server
(
0
),
connected
(
0
),
ctime
(
0
)
,
status
(
0
)
{}
pwr_tNid
nid
;
pwr_tNid
nid
;
char
name
[
80
];
char
name
[
80
];
int
is_server
;
int
is_server
;
int
connected
;
int
connected
;
double
ctime
;
double
ctime
;
pwr_tStatus
status
;
};
};
class
rt_sevhistmon
{
class
rt_sevhistmon
{
...
@@ -94,6 +95,9 @@ class rt_sevhistmon {
...
@@ -94,6 +95,9 @@ class rt_sevhistmon {
int
connect
();
int
connect
();
int
retry_connect
();
int
retry_connect
();
bool
send_connect
(
pwr_tNid
nid
,
pwr_tStatus
*
sts
);
bool
send_connect
(
pwr_tNid
nid
,
pwr_tStatus
*
sts
);
bool
send_server_status_request
(
pwr_tStatus
*
sts
);
bool
send_server_status_request
(
pwr_tNid
nid
,
pwr_tStatus
*
sts
);
void
receive_server_status
(
sev_sMsgServerStatus
*
msg
,
pwr_tNid
nid
);
int
send_itemlist
(
pwr_tNid
nid
);
int
send_itemlist
(
pwr_tNid
nid
);
int
send_data
();
int
send_data
();
};
};
...
...
src/lib/rt/src/rt_sev_net.h
View file @
e99e56fa
...
@@ -40,7 +40,9 @@ typedef enum {
...
@@ -40,7 +40,9 @@ typedef enum {
sev_eMsgType_HistDataGetRequest
,
sev_eMsgType_HistDataGetRequest
,
sev_eMsgType_HistDataGet
,
sev_eMsgType_HistDataGet
,
sev_eMsgType_HistItemDelete
,
sev_eMsgType_HistItemDelete
,
sev_eMsgType_HistItemStatus
sev_eMsgType_HistItemStatus
,
sev_eMsgType_ServerStatusRequest
,
sev_eMsgType_ServerStatus
}
sev_eMsgType
;
}
sev_eMsgType
;
typedef
struct
{
typedef
struct
{
...
@@ -124,6 +126,11 @@ typedef struct {
...
@@ -124,6 +126,11 @@ typedef struct {
pwr_tStatus
Status
;
pwr_tStatus
Status
;
}
sev_sMsgHistItemStatus
;
}
sev_sMsgHistItemStatus
;
typedef
struct
{
sev_eMsgType
Type
;
pwr_tStatus
Status
;
}
sev_sMsgServerStatus
;
#ifdef __cplusplus
#ifdef __cplusplus
}
}
#endif
#endif
...
...
src/lib/rt/src/rt_sevcli.c
View file @
e99e56fa
...
@@ -189,7 +189,7 @@ int sevcli_get_itemdata( pwr_tStatus *sts, sevcli_tCtx ctx, pwr_tOid oid,
...
@@ -189,7 +189,7 @@ int sevcli_get_itemdata( pwr_tStatus *sts, sevcli_tCtx ctx, pwr_tOid oid,
sev_sMsgHistDataGetRequest
*
msg
;
sev_sMsgHistDataGetRequest
*
msg
;
qcom_sQid
tgt
;
qcom_sQid
tgt
;
qcom_sPut
put
;
qcom_sPut
put
;
int
tmo
=
1
0000
;
int
tmo
=
3
0000
;
qcom_sGet
get
;
qcom_sGet
get
;
pwr_tStatus
lsts
;
pwr_tStatus
lsts
;
...
@@ -217,13 +217,20 @@ int sevcli_get_itemdata( pwr_tStatus *sts, sevcli_tCtx ctx, pwr_tOid oid,
...
@@ -217,13 +217,20 @@ int sevcli_get_itemdata( pwr_tStatus *sts, sevcli_tCtx ctx, pwr_tOid oid,
msg
->
EndTime
=
net_TimeToNetTime
(
&
endtime
);
msg
->
EndTime
=
net_TimeToNetTime
(
&
endtime
);
msg
->
NumPoints
=
numpoints
;
msg
->
NumPoints
=
numpoints
;
// Empty queue
sev_sMsgHistDataGet
*
rmsg
;
for
(;;)
{
rmsg
=
(
sev_sMsgHistDataGet
*
)
qcom_Get
(
sts
,
&
ctx
->
qid
,
&
get
,
0
);
if
(
!
rmsg
)
break
;
}
if
(
!
qcom_Put
(
sts
,
&
tgt
,
&
put
))
{
if
(
!
qcom_Put
(
sts
,
&
tgt
,
&
put
))
{
qcom_Free
(
&
lsts
,
put
.
data
);
qcom_Free
(
&
lsts
,
put
.
data
);
return
0
;
return
0
;
}
}
sev_sMsgHistDataGet
*
rmsg
;
memset
(
&
get
,
0
,
sizeof
(
get
));
memset
(
&
get
,
0
,
sizeof
(
get
));
for
(;;)
{
for
(;;)
{
...
...
xtt/lib/xtt/src/xtt_sevhist.cpp
View file @
e99e56fa
...
@@ -52,7 +52,7 @@ XttSevHist::XttSevHist( void *parent_ctx,
...
@@ -52,7 +52,7 @@ XttSevHist::XttSevHist( void *parent_ctx,
sevcli_tCtx
xn_scctx
,
sevcli_tCtx
xn_scctx
,
int
*
sts
)
:
int
*
sts
)
:
xnav
(
parent_ctx
),
gcd
(
0
),
curve
(
0
),
rows
(
0
),
vsize
(
0
),
timerid
(
0
),
close_cb
(
0
),
help_cb
(
0
),
xnav
(
parent_ctx
),
gcd
(
0
),
curve
(
0
),
rows
(
0
),
vsize
(
0
),
timerid
(
0
),
close_cb
(
0
),
help_cb
(
0
),
first_scan
(
1
),
scctx
(
xn_scctx
),
oid
(
xn_oid
[
0
])
first_scan
(
1
),
scctx
(
xn_scctx
),
oid
(
xn_oid
[
0
])
,
time_low_old
(
0
),
time_high_old
(
0
)
{
{
strncpy
(
aname
,
xn_aname
[
0
],
sizeof
(
aname
));
strncpy
(
aname
,
xn_aname
[
0
],
sizeof
(
aname
));
...
@@ -207,6 +207,9 @@ void XttSevHist::sevhist_higher_res_cb( void *ctx)
...
@@ -207,6 +207,9 @@ void XttSevHist::sevhist_higher_res_cb( void *ctx)
}
}
sevhist
->
get_data
(
&
sts
,
t_low
,
t_high
);
sevhist
->
get_data
(
&
sts
,
t_low
,
t_high
);
sevhist
->
time_low_old
=
0
;
sevhist
->
time_high_old
=
0
;
}
}
void
XttSevHist
::
sevhist_lower_res_cb
(
void
*
ctx
)
void
XttSevHist
::
sevhist_lower_res_cb
(
void
*
ctx
)
...
@@ -225,6 +228,13 @@ void XttSevHist::sevhist_lower_res_cb( void *ctx)
...
@@ -225,6 +228,13 @@ void XttSevHist::sevhist_lower_res_cb( void *ctx)
5
*
(
sevhist
->
gcd
->
max_value_axis
[
0
]
-
sevhist
->
gcd
->
min_value_axis
[
0
]));
5
*
(
sevhist
->
gcd
->
max_value_axis
[
0
]
-
sevhist
->
gcd
->
min_value_axis
[
0
]));
t_high
.
tv_nsec
=
0
;
t_high
.
tv_nsec
=
0
;
if
(
t_low
.
tv_sec
==
sevhist
->
time_low_old
&&
t_high
.
tv_sec
==
sevhist
->
time_high_old
)
{
t_low
.
tv_sec
=
int
(
sevhist
->
gcd
->
min_value_axis
[
0
]
-
25
*
(
sevhist
->
gcd
->
max_value_axis
[
0
]
-
sevhist
->
gcd
->
min_value_axis
[
0
]));
t_high
.
tv_sec
=
int
(
sevhist
->
gcd
->
max_value_axis
[
0
]
+
25
*
(
sevhist
->
gcd
->
max_value_axis
[
0
]
-
sevhist
->
gcd
->
min_value_axis
[
0
]));
}
{
{
char
s1
[
40
],
s2
[
40
];
char
s1
[
40
],
s2
[
40
];
time_AtoAscii
(
&
t_low
,
time_eFormat_NumDateAndTime
,
s1
,
sizeof
(
s1
));
time_AtoAscii
(
&
t_low
,
time_eFormat_NumDateAndTime
,
s1
,
sizeof
(
s1
));
...
@@ -233,6 +243,8 @@ void XttSevHist::sevhist_lower_res_cb( void *ctx)
...
@@ -233,6 +243,8 @@ void XttSevHist::sevhist_lower_res_cb( void *ctx)
printf
(
"Low: %s, High: %s
\n
"
,
s1
,
s2
);
printf
(
"Low: %s, High: %s
\n
"
,
s1
,
s2
);
}
}
sevhist
->
get_data
(
&
sts
,
t_low
,
t_high
);
sevhist
->
get_data
(
&
sts
,
t_low
,
t_high
);
sevhist
->
time_low_old
=
t_low
.
tv_sec
;
sevhist
->
time_high_old
=
t_high
.
tv_sec
;
}
}
void
XttSevHist
::
sevhist_help_cb
(
void
*
ctx
)
void
XttSevHist
::
sevhist_help_cb
(
void
*
ctx
)
...
...
xtt/lib/xtt/src/xtt_sevhist.h
View file @
e99e56fa
...
@@ -71,6 +71,8 @@ class XttSevHist {
...
@@ -71,6 +71,8 @@ class XttSevHist {
pwr_tOName
aname
;
pwr_tOName
aname
;
pwr_tOid
oid
;
pwr_tOid
oid
;
CoWow
*
wow
;
CoWow
*
wow
;
long
int
time_low_old
;
long
int
time_high_old
;
//! Constructor
//! Constructor
XttSevHist
(
void
*
xn_parent_ctx
,
XttSevHist
(
void
*
xn_parent_ctx
,
...
...
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