tmain() { Vmalloc_t *vm; Void_t *addr[10]; Void_t *mem; int i; Vmdcheap->round = 64; if(!(vm = vmopen(Vmdcheap, Vmbest, 0)) ) terror("Open failed"); for(i = 0; i < 10; ++i) if(!(addr[i] = vmalloc(vm,15)) ) terror("vmalloc failed"); for(i = 0; i < 10; ++i) if(vmfree(vm,addr[i]) < 0) terror("vmfree failed"); for(i = 0; i < 10; ++i) if(!(addr[i] = vmalloc(vm,15)) ) terror("vmalloc failed"); #ifdef DEBUG for(i = 0; i < 10; ++i) printf("size[%d]=%d\n",i,vmsize(vm,addr[i])); printf("Extent=%d\n",vmsize(vm,NIL(Void_t*))); #endif mem = 0; if(posix_memalign(&mem, 3, 128) != EINVAL) terror("Bad return value from posix_memalign()"); if(mem) terror("Bad memory"); if(posix_memalign(&mem, 3*sizeof(Void_t*), 128) != EINVAL) terror("Bad return value from posix_memalign()"); if(mem) terror("Bad memory"); if(posix_memalign(&mem, (sizeof(Void_t*)<<4), 128) != 0 ) terror("posix_memalign() failed"); if(!mem) terror("Bad memory"); texit(0); }
int main (int argc, gchar * argv[]) { GstElement *element; GstElement *element2; GstPad *pad; long usage1; gint i, iters; gst_init (&argc, &argv); if (argc == 2) iters = atoi (argv[1]); else iters = ITERS; g_print ("starting element with pad test with %d iterations\n", iters); usage1 = vmsize (); element = gst_element_factory_make ("fakesink", NULL);; g_assert (GST_IS_ELEMENT (element)); pad = gst_element_get_pad (element, "sink"); g_assert (GST_IS_PAD (pad)); g_assert (GST_OBJECT_IS_FLOATING (element)); g_assert (!GST_OBJECT_IS_FLOATING (pad)); g_assert (gst_pad_get_parent (pad) == element); gst_object_unref (element); g_print ("create/addpad/unref 1 new element: %ld\n", vmsize () - usage1); for (i = 0; i < iters; i++) { element = gst_element_factory_make ("fakesink", NULL);; g_assert (GST_IS_ELEMENT (element)); gst_object_unref (element); } g_print ("create/unref %d elements: %ld\n", iters, vmsize () - usage1); for (i = 0; i < iters / 2; i++) { element = gst_element_factory_make ("fakesink", NULL); g_assert (GST_IS_ELEMENT (element)); element2 = gst_element_factory_make ("fakesrc", NULL); g_assert (GST_IS_ELEMENT (element2)); gst_element_link_pads (element2, "src", element, "sink"); g_assert (GST_PAD_IS_LINKED (gst_element_get_pad (element2, "src"))); g_assert (GST_PAD_IS_LINKED (gst_element_get_pad (element, "sink"))); gst_object_unref (element); g_assert (!GST_PAD_IS_LINKED (gst_element_get_pad (element2, "src"))); gst_object_unref (element2); } g_print ("create/link/unref %d element duos: %ld\n", iters / 2, vmsize () - usage1); element = gst_element_factory_make ("fakesink", NULL);; g_assert (GST_IS_ELEMENT (element)); pad = gst_element_get_pad (element, "sink"); g_assert (GST_IS_PAD (pad)); gst_element_remove_pad (element, pad); g_assert (gst_element_get_pad (element, "sink") == NULL); gst_object_unref (element); g_print ("pad removal on one element: %ld\n", vmsize () - usage1); for (i = 0; i < iters / 2; i++) { element = gst_element_factory_make ("fakesink", NULL);; g_assert (GST_IS_ELEMENT (element)); pad = gst_element_get_pad (element, "sink"); g_assert (GST_IS_PAD (pad)); gst_element_remove_pad (element, pad); g_assert (gst_element_get_pad (element, "sink") == NULL); gst_object_unref (element); } g_print ("pad removal loop on %d elements: %ld\n", iters / 2, vmsize () - usage1); for (i = 0; i < iters / 2; i++) { element = gst_element_factory_make ("fakesink", NULL);; g_assert (GST_IS_ELEMENT (element)); pad = gst_element_get_pad (element, "sink"); g_assert (GST_IS_PAD (pad)); gst_object_ref (pad); gst_element_remove_pad (element, pad); g_assert (gst_pad_get_parent (pad) == NULL); gst_object_unref (pad); gst_object_unref (element); } g_print ("pad ref/removal/test loop on %d elements: %ld\n", iters / 2, vmsize () - usage1); element = gst_element_factory_make ("fakesink", NULL);; g_assert (GST_IS_ELEMENT (element)); pad = gst_element_get_pad (element, "sink"); g_assert (GST_IS_PAD (pad)); gst_object_unref (element); g_print ("pad unref on one element: %ld\n", vmsize () - usage1); for (i = 0; i < iters / 2; i++) { element = gst_element_factory_make ("fakesink", NULL); g_assert (GST_IS_ELEMENT (element)); pad = gst_element_get_pad (element, "sink"); g_assert (GST_IS_PAD (pad)); gst_object_unref (element); } g_print ("pad unref loop on %d elements: %ld\n", iters / 2, vmsize () - usage1); g_print ("leaked: %ld\n", vmsize () - usage1); return 0; }
int main (int argc, gchar * argv[]) { GstElement *thread, *element; long usage1; gint i, iters; gst_init (&argc, &argv); if (argc == 2) iters = atoi (argv[1]); else iters = ITERS; g_print ("starting test\n"); usage1 = vmsize (); thread = gst_thread_new ("somethread"); gst_object_unref (thread); g_print ("create/unref new thread %ld\n", vmsize () - usage1); for (i = 0; i < iters; i++) { thread = gst_thread_new ("somethread"); gst_object_unref (thread); } g_print ("create/unref %d threads %ld\n", iters, vmsize () - usage1); thread = gst_thread_new ("somethread"); g_assert (GST_OBJECT_FLOATING (thread)); gst_object_ref (thread); gst_object_sink (GST_OBJECT (thread)); g_assert (!GST_OBJECT_FLOATING (thread)); gst_object_unref (thread); g_print ("create/ref/sink/unref new thread %ld\n", vmsize () - usage1); for (i = 0; i < iters; i++) { thread = gst_thread_new ("somethread"); gst_object_ref (thread); gst_object_sink (GST_OBJECT (thread)); gst_object_unref (thread); } g_print ("create/ref/sink/unref %d threads %ld\n", iters, vmsize () - usage1); thread = gst_thread_new ("somethread"); g_assert (!GST_OBJECT_DESTROYED (thread)); gst_object_unref (thread); g_assert (GST_OBJECT_DESTROYED (thread)); gst_object_unref (thread); g_print ("create/destroy/unref new thread %ld\n", vmsize () - usage1); for (i = 0; i < iters; i++) { thread = gst_thread_new ("somethread"); gst_object_unref (thread); gst_object_unref (thread); } g_print ("create/destroy/unref %d thread %ld\n", iters, vmsize () - usage1); thread = gst_thread_new ("somethread"); gst_object_ref (thread); gst_object_unref (thread); gst_object_unref (thread); g_print ("create/ref/unref/unref new thread %ld\n", vmsize () - usage1); for (i = 0; i < iters; i++) { thread = gst_thread_new ("somethread"); gst_object_ref (thread); gst_object_unref (thread); gst_object_unref (thread); } g_print ("create/ref/unref/unref %d thread %ld\n", iters, vmsize () - usage1); thread = gst_thread_new ("somethread"); gst_object_ref (thread); gst_object_unref (thread); gst_object_unref (thread); gst_object_unref (thread); g_print ("craete/ref/destroy/unref/unref new thread %ld\n", vmsize () - usage1); for (i = 0; i < iters; i++) { thread = gst_thread_new ("somethread"); gst_object_ref (thread); gst_object_unref (thread); gst_object_unref (thread); gst_object_unref (thread); } g_print ("craete/ref/destroy/unref/unref %d threads %ld\n", iters, vmsize () - usage1); for (i = 0; i < iters; i++) { thread = gst_thread_new ("somethread"); gst_object_ref (thread); gst_element_set_name (thread, "testing123"); gst_object_unref (thread); gst_element_set_name (thread, "testing123"); gst_object_unref (thread); gst_object_unref (thread); } g_print ("craete/ref/destroy/unref/unref %d threads with name %ld\n", iters, vmsize () - usage1); thread = gst_thread_new ("somethread"); for (i = 0; i < iters; i++) { gst_element_set_name (thread, "testing"); } gst_object_unref (thread); g_print ("set name %d times %ld\n", iters, vmsize () - usage1); for (i = 0; i < iters; i++) { thread = gst_thread_new ("somethread"); element = gst_element_new (); gst_element_set_name (element, "test1"); gst_bin_add (GST_BIN (thread), element); gst_object_unref (thread); } g_print ("create/unref %d thread with one element %ld\n", iters, vmsize () - usage1); for (i = 0; i < iters; i++) { thread = create_thread (); gst_object_unref (thread); } g_print ("create/unref %d thread with children %ld\n", iters, vmsize () - usage1); for (i = 0; i < iters / 2; i++) { thread = create_thread_ghostpads (); gst_object_unref (thread); } g_print ("create/unref %d thread with children and ghostpads %ld\n", iters / 2, vmsize () - usage1); for (i = 0; i < iters; i++) { add_remove_test1 (); } g_print ("add/remove test1 %d in thread %ld\n", iters, vmsize () - usage1); for (i = 0; i < iters; i++) { add_remove_test2 (); } g_print ("add/remove test2 %d in thread %ld\n", iters, vmsize () - usage1); for (i = 0; i < iters; i++) { add_remove_test3 (); } g_print ("add/destroy/remove test3 %d in thread %ld\n", iters, vmsize () - usage1); for (i = 0; i < iters; i++) { add_remove_test4 (); } g_print ("add/destroy/remove test4 %d in thread %ld\n", iters, vmsize () - usage1); g_print ("leaked: %ld\n", vmsize () - usage1); return (vmsize () - usage1 ? -1 : 0); }