| 300 | } |
| 301 | |
| 302 | static int getKernelVersion() { |
| 303 | struct utsname un{}; |
| 304 | if (uname(&un) != 0) { |
| 305 | return 0; |
| 306 | } |
| 307 | int kmaj = 0, kmin = 0, kpatch = 0; |
| 308 | sscanf(un.release, "%d.%d.%d", &kmaj, &kmin, &kpatch); |
| 309 | return KERNEL_VERSION(kmaj, kmin, kpatch); |
| 310 | } |
| 311 | |
| 312 | template <typename T> |
| 313 | bool xwrite(int fd, const T& data) { |