hash: fallback to software CRC32 implementation
[dpdk.git] / lib / librte_eal / linuxapp / eal / eal.c
index 1d1fbdd..f99e158 100644 (file)
@@ -448,7 +448,7 @@ eal_parse_base_virtaddr(const char *arg)
                return -1;
 
        /* make sure we don't exceed 32-bit boundary on 32-bit target */
-#ifndef RTE_ARCH_X86_64
+#ifndef RTE_ARCH_64
        if (addr >= UINTPTR_MAX)
                return -1;
 #endif
@@ -458,7 +458,7 @@ eal_parse_base_virtaddr(const char *arg)
         * it can align to 2MB for x86. So this alignment can also be used
         * on x86 */
        internal_config.base_virtaddr =
-               RTE_PTR_ALIGN_CEIL((uintptr_t)addr, RTE_PGSIZE_16M);
+               RTE_PTR_ALIGN_CEIL((uintptr_t)addr, (size_t)RTE_PGSIZE_16M);
 
        return 0;
 }
@@ -859,3 +859,31 @@ int rte_eal_has_hugepages(void)
 {
        return ! internal_config.no_hugetlbfs;
 }
+
+int
+rte_eal_check_module(const char *module_name)
+{
+       char mod_name[30]; /* Any module names can be longer than 30 bytes? */
+       int ret = 0;
+       int n;
+
+       if (NULL == module_name)
+               return -1;
+
+       FILE *fd = fopen("/proc/modules", "r");
+       if (NULL == fd) {
+               RTE_LOG(ERR, EAL, "Open /proc/modules failed!"
+                       " error %i (%s)\n", errno, strerror(errno));
+               return -1;
+       }
+       while (!feof(fd)) {
+               n = fscanf(fd, "%29s %*[^\n]", mod_name);
+               if ((n == 1) && !strcmp(mod_name, module_name)) {
+                       ret = 1;
+                       break;
+               }
+       }
+       fclose(fd);
+
+       return ret;
+}