#include <gtest/gtest.h>
#include <poll.h>
+#define GEM_NAME "cgem"
+
extern "C"
{
#include <GEMdrvAPI.h>
*/
TEST (test_gem, open)
{
- int fd = gem_open();
+ int fd = gem_open(GEM_NAME);
if (fd <= 0)
fprintf (stderr, "Cannot find gem driver; "
- "did you load it? (i.e., sudo modprobe gem)\n");
+ "did you load it? (i.e., sudo modprobe cgem)\n");
- assert (fd > 0);
+ ASSERT_GT (fd, 0);
close (fd);
}
*/
TEST (test_gem, create)
{
- int fd = gem_open();
+ int fd = gem_open(GEM_NAME);
uint32_t size;
uint32_t handle;
- assert (fd > 0);
+ ASSERT_GT (fd, 0);
/* minimum buffer size is 4KB */
handle = gem_create (fd, 1, &size);
- assert (size == 4096);
+ ASSERT_EQ (size, 4096);
gem_destroy (fd, handle);
/* create a 1MB buffer */
handle = gem_create (fd, 1 << 20, &size);
- assert (size == 1 << 20);
+ ASSERT_EQ (size, 1 << 20);
gem_destroy (fd, handle);
/* create a 4MB buffer */
handle = gem_create (fd, 1 << 22, &size);
- assert (size == 1 << 22);
+ ASSERT_EQ (size, 1 << 22);
gem_destroy (fd, handle);
close (fd);
{
uint32_t handle, size, page;
uint32_t *ptr;
- int fd = gem_open();
+ int fd = gem_open(GEM_NAME);
- assert (fd > 0);
+ ASSERT_GT (fd, 0);
/* create a 1MB buffer */
- handle = gem_create (fd, 1 << 20, &size);
- assert (size == 1 << 20);
+ handle = gem_create (fd, 1 << 22, &size);
+ ASSERT_EQ (size, 1 << 22);
/* mmap with write permission */
ptr = (uint32_t *) gem_mmap (fd, handle, size, PROT_WRITE, false);
- assert (ptr != NULL);
+ ASSERT_TRUE (ptr != NULL);
/* try to write the first slot of each page */
for (page = 0; page < size >> 2; page += 1 << 10)
ptr[page] = 0;
- /* now its handle can be released */
- gem_destroy (fd, handle);
-
munmap (ptr, size);
+ gem_destroy (fd, handle);
+
close (fd);
}
uint32_t handle, size, page;
uint32_t *ptr;
int dmabuf_fd;
- int fd = gem_open();
+ int fd = gem_open(GEM_NAME);
- assert (fd > 0);
+ ASSERT_GT (fd, 0);
/* create a 1MB gem buffer */
handle = gem_create (fd, 1 << 20, &size);
- assert (size == 1 << 20);
+ ASSERT_EQ (size, 1 << 20);
/* export the gem buffer into a dmabuf */
dmabuf_fd = gem_prime_export (fd, handle);
- assert (dmabuf_fd > 0);
+ ASSERT_GT (dmabuf_fd, 0);
/* mmap for dmabuf */
ptr = (uint32_t *) gem_mmap (dmabuf_fd, handle, size, PROT_WRITE, true);
- assert (ptr != NULL);
- close (dmabuf_fd);
+ ASSERT_TRUE (ptr != NULL);
for (page = 0; page < (size >> 2); page += 1 << 10)
ptr[page] = page;
munmap (ptr, size);
+ close (dmabuf_fd);
+
/* mmap */
ptr = (uint32_t *) gem_mmap (fd, handle, size, PROT_READ, false);
- assert (ptr != NULL);
-
- gem_destroy (fd, handle);
+ ASSERT_TRUE (ptr != NULL);
/* compare data */
for (page = 0; page < (size >> 2); page += 1 << 10)
- assert (ptr[page] == page);
+ ASSERT_EQ (ptr[page], page);
munmap (ptr, size);
+ gem_destroy (fd, handle);
+
close (fd);
}
i = num;
list_for_each_entry (elem, test_list, list) {
- assert (elem->val == --i);
+ ASSERT_EQ (elem->val, --i);
}
i = 0;
list_for_each_entry_reverse (elem, test_list, list) {
- assert (elem->val == i++);
+ ASSERT_EQ (elem->val, i++);
}
i = num;
list_for_each_entry_safe (elem, tmp, test_list, list) {
- assert (elem->val == --i);
+ ASSERT_EQ (elem->val, --i);
list_del (&test_list, &elem->list);
free (elem);
}
/* dummy */
i++;
}
- assert (i == 0);
+ ASSERT_EQ (i, 0);
}
/**
hash_table_add (&test_ht, &elem->hash, i);
}
- assert (test_ht.num == num);
+ ASSERT_EQ (test_ht.num, num);
hash_for_each_possible (elem, test_ht, hash, num/2) {
if (elem->val == num/2) {
}
}
- assert (elem->val == num/2);
+ ASSERT_EQ (elem->val, num/2);
hash_table_del (&test_ht, &elem->hash);
free (elem);
hash_for_each (elem, test_ht, bkt, hash) {
i++;
}
- assert (i == num - 1);
+ ASSERT_EQ (i, num - 1);
i = 0;
hash_for_each_safe (elem, tmp, test_ht, bkt, hash) {
free (elem);
i++;
}
- assert (i == num - 1);
- assert (test_ht.num == 0);
+ ASSERT_EQ (i, num - 1);
+ ASSERT_EQ (test_ht.num, 0);
}
/**