Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-ports-gnome
Path: blob/main/benchmarks/kdiskmark/files/patch-src_diskdriveinfo.cpp
16124 views
1
--- src/diskdriveinfo.cpp.orig 2021-02-19 10:07:38 UTC
2
+++ src/diskdriveinfo.cpp
3
@@ -3,6 +3,10 @@
4
#include <QString>
5
#include <QFile>
6
#include <QFileInfo>
7
+#ifdef __FreeBSD__
8
+#include <sys/disk.h>
9
+#include <sys/fcntl.h>
10
+#endif
11
12
QString DiskDriveInfo::getDeviceByVolume(const QString &volume)
13
{
14
@@ -12,6 +16,7 @@ QString DiskDriveInfo::getDeviceByVolume(const QString
15
16
QString DiskDriveInfo::getModelName(const QString &volume)
17
{
18
+#if defined(__linux__)
19
QFileInfo sysClass(QFileInfo(QString("/sys/class/block/%1/..")
20
.arg(getDeviceByVolume(volume)))
21
.canonicalFilePath());
22
@@ -24,7 +29,18 @@ QString DiskDriveInfo::getModelName(const QString &vol
23
QString model = sysBlock.readAll().simplified();
24
25
sysBlock.close();
26
+#elif defined(__FreeBSD__)
27
+ struct diocgattr_arg arg;
28
29
+ strlcpy(arg.name, "GEOM::descr", sizeof(arg.name));
30
+ arg.len = sizeof(arg.value.str);
31
+
32
+ int fd = open(volume.toStdString().c_str(), O_RDONLY);
33
+ if (fd == -1 || ioctl(fd, DIOCGATTR, &arg) == -1)
34
+ return QString();
35
+
36
+ QString model(arg.value.str);
37
+#endif
38
return model;
39
}
40
41
42