Dawn Framework 1.0
Universal data acquisition framework for embedded systems
uname.cxx
1// dawn/src/io/uname.cxx
2//
3// SPDX-License-Identifier: Apache-2.0
4//
5
6#include "dawn/io/uname.hxx"
7
8#include <sys/utsname.h>
9
10using namespace dawn;
11
13{
15 {
16 DAWNERR("HOSTNAME requires DTYPE_CHAR\n");
17 return -EINVAL;
18 }
19
20 return OK;
21}
22
24{
25 return dim;
26}
27
28size_t CIOUname::getDataDim(uint16_t cls) const
29{
30 switch (cls)
31 {
33 {
34 return HOST_NAME_MAX;
35 }
36
37 default:
38 {
39 DAWNERR("Invalid uname class %d\n", cls);
40 return 0;
41 }
42 }
43}
44
45int CIOUname::getDataImpl(IODataCmn &data, size_t len)
46{
47 struct utsname name_;
48 int ret;
49
50 // No batch supported
51
52 if (len != 1)
53 {
54 return -ENOTSUP;
55 }
56
57 /* Get system info */
58
59 ret = uname(&name_);
60 if (ret < 0)
61 {
62 DAWNERR("uname failed %d\n", ret);
63 return ret;
64 }
65
66 char *tmp = static_cast<char *>(data.getDataPtr());
67 size_t maxlen = data.getDataSize();
68
69 // Copy node name to buffer
70
71 std::memset(tmp, 0, maxlen);
72 if (maxlen > 0)
73 {
74 std::strncpy(tmp, name_.nodename, maxlen - 1);
75 }
76
77 return OK;
78}
79
81{
82 UNUSED(data);
83
84 return -ENOTSUP;
85}
86
88{
89 switch (getCls())
90 {
92 {
93 return HOST_NAME_MAX * sizeof(char);
94 }
95
96 default:
97 {
98 return 0;
99 }
100 }
101}
@ IO_CLASS_SYSTEM_HOSTNAME
System hostname.
Definition common.hxx:155
int setDataImpl(IODataCmn &data)
Set data implementation (override in derived classes).
Definition uname.cxx:80
size_t getDataSize() const
Get data size in bytes.
Definition uname.cxx:87
int init()
One-time initialize object after bindings are resolved.
Definition uname.cxx:12
int getDataImpl(IODataCmn &data, size_t len)
Get data implementation (override in derived classes).
Definition uname.cxx:45
size_t getDataDim() const
Get data vector dimension.
Definition uname.cxx:23
uint16_t getCls() const
Get object class field.
Definition object.cxx:170
uint8_t getDtype() const
Get data type field.
Definition object.cxx:175
Out-of-tree user-extension hooks for Dawn.
Definition bindable.hxx:13
Base interface for I/O data buffers (static and dynamic).
Definition idata.hxx:21
virtual void * getDataPtr(size_t batch=0)=0
Get pointer to data only (skips timestamp if present).
virtual size_t getDataSize()=0
Get data size in bytes.
@ DTYPE_CHAR
Character/string type (null-terminated, 4-byte aligned).
Definition objectid.hxx:144