Changeset 21275b58 in rtems for testsuites/sptests/spsysinit01/init.c
- Timestamp:
- 11/22/18 18:14:51 (5 years ago)
- Branches:
- 5, master
- Children:
- 6b0a729b
- Parents:
- 0f5b2c09
- git-author:
- Sebastian Huber <sebastian.huber@…> (11/22/18 18:14:51)
- git-committer:
- Sebastian Huber <sebastian.huber@…> (12/14/18 06:03:29)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
testsuites/sptests/spsysinit01/init.c
r0f5b2c09 r21275b58 20 20 21 21 #include <sys/types.h> 22 #include <sys/mman.h> 22 23 #include <sys/stat.h> 23 24 24 25 #include <assert.h> 26 #include <fcntl.h> 27 #include <mqueue.h> 25 28 #include <pthread.h> 29 #include <semaphore.h> 30 #include <signal.h> 31 #include <stdlib.h> 26 32 #include <string.h> 27 #include < stdlib.h>33 #include <time.h> 28 34 #include <unistd.h> 29 35 … … 189 195 } 190 196 197 static bool info_not_init(const Objects_Information *info) 198 { 199 return _Chain_Is_empty(&info->Inactive); 200 } 201 202 static bool info_is_init(const Objects_Information *info, size_t count) 203 { 204 return _Chain_Node_count_unprotected(&info->Inactive) == count; 205 } 206 191 207 FIRST(RTEMS_SYSINIT_BSP_WORK_AREAS) 192 208 { … … 249 265 FIRST(RTEMS_SYSINIT_DATA_STRUCTURES) 250 266 { 251 assert( 252 _Objects_Get_maximum_index(&_Thread_Internal_information.Objects) == 0 253 ); 267 assert(info_not_init(&_Thread_Information.Objects)); 254 268 next_step(DATA_STRUCTURES_PRE); 255 269 } … … 257 271 LAST(RTEMS_SYSINIT_DATA_STRUCTURES) 258 272 { 259 assert( 260 _Objects_Get_maximum_index(&_Thread_Internal_information.Objects) != 0 261 ); 273 assert(info_is_init(&_Thread_Information.Objects, 1)); 262 274 next_step(DATA_STRUCTURES_POST); 263 275 } … … 265 277 FIRST(RTEMS_SYSINIT_USER_EXTENSIONS) 266 278 { 267 assert( _Objects_Get_maximum_index(&_Extension_Information) == 0);279 assert(info_not_init(&_Extension_Information)); 268 280 next_step(USER_EXTENSIONS_PRE); 269 281 } … … 271 283 LAST(RTEMS_SYSINIT_USER_EXTENSIONS) 272 284 { 273 assert( _Objects_Get_maximum_index(&_Extension_Information) != 0);285 assert(info_is_init(&_Extension_Information, 1)); 274 286 next_step(USER_EXTENSIONS_POST); 275 287 } … … 277 289 FIRST(RTEMS_SYSINIT_CLASSIC_TASKS) 278 290 { 279 assert( _Objects_Get_maximum_index(&_RTEMS_tasks_Information.Objects) == 0);291 assert(info_not_init(&_RTEMS_tasks_Information.Objects)); 280 292 next_step(CLASSIC_TASKS_PRE); 281 293 } … … 283 295 LAST(RTEMS_SYSINIT_CLASSIC_TASKS) 284 296 { 285 assert( _Objects_Get_maximum_index(&_RTEMS_tasks_Information.Objects) != 0);297 assert(info_is_init(&_RTEMS_tasks_Information.Objects, 2)); 286 298 next_step(CLASSIC_TASKS_POST); 287 299 } … … 289 301 FIRST(RTEMS_SYSINIT_CLASSIC_TIMER) 290 302 { 291 assert( _Objects_Get_maximum_index(&_Timer_Information) == 0);303 assert(info_not_init(&_Timer_Information)); 292 304 next_step(CLASSIC_TIMER_PRE); 293 305 } … … 295 307 LAST(RTEMS_SYSINIT_CLASSIC_TIMER) 296 308 { 297 assert( _Objects_Get_maximum_index(&_Timer_Information) != 0);309 assert(info_is_init(&_Timer_Information, 1)); 298 310 next_step(CLASSIC_TIMER_POST); 299 311 } … … 323 335 FIRST(RTEMS_SYSINIT_CLASSIC_MESSAGE_QUEUE) 324 336 { 325 assert( _Objects_Get_maximum_index(&_Message_queue_Information) == 0);337 assert(info_not_init(&_Message_queue_Information)); 326 338 next_step(CLASSIC_MESSAGE_QUEUE_PRE); 327 339 } … … 329 341 LAST(RTEMS_SYSINIT_CLASSIC_MESSAGE_QUEUE) 330 342 { 331 assert( _Objects_Get_maximum_index(&_Message_queue_Information) != 0);343 assert(info_is_init(&_Message_queue_Information, 1)); 332 344 next_step(CLASSIC_MESSAGE_QUEUE_POST); 333 345 } … … 335 347 FIRST(RTEMS_SYSINIT_CLASSIC_SEMAPHORE) 336 348 { 337 assert(_ Objects_Get_maximum_index(&_Semaphore_Information)== 0);349 assert(_Semaphore_Information.initial_objects[0].id == 0); 338 350 next_step(CLASSIC_SEMAPHORE_PRE); 339 351 } … … 341 353 LAST(RTEMS_SYSINIT_CLASSIC_SEMAPHORE) 342 354 { 343 assert(_ Objects_Get_maximum_index(&_Semaphore_Information)!= 0);355 assert(_Semaphore_Information.initial_objects[0].id != 0); 344 356 next_step(CLASSIC_SEMAPHORE_POST); 345 357 } … … 347 359 FIRST(RTEMS_SYSINIT_CLASSIC_PARTITION) 348 360 { 349 assert( _Objects_Get_maximum_index(&_Partition_Information) == 0);361 assert(info_not_init(&_Partition_Information)); 350 362 next_step(CLASSIC_PARTITION_PRE); 351 363 } … … 353 365 LAST(RTEMS_SYSINIT_CLASSIC_PARTITION) 354 366 { 355 assert( _Objects_Get_maximum_index(&_Partition_Information) != 0);367 assert(info_is_init(&_Partition_Information, 1)); 356 368 next_step(CLASSIC_PARTITION_POST); 357 369 } … … 359 371 FIRST(RTEMS_SYSINIT_CLASSIC_REGION) 360 372 { 361 assert( _Objects_Get_maximum_index(&_Region_Information) == 0);373 assert(info_not_init(&_Region_Information)); 362 374 next_step(CLASSIC_REGION_PRE); 363 375 } … … 365 377 LAST(RTEMS_SYSINIT_CLASSIC_REGION) 366 378 { 367 assert( _Objects_Get_maximum_index(&_Region_Information) != 0);379 assert(info_is_init(&_Region_Information, 1)); 368 380 next_step(CLASSIC_REGION_POST); 369 381 } … … 371 383 FIRST(RTEMS_SYSINIT_CLASSIC_DUAL_PORTED_MEMORY) 372 384 { 373 assert( _Objects_Get_maximum_index(&_Dual_ported_memory_Information) == 0);385 assert(info_not_init(&_Dual_ported_memory_Information)); 374 386 next_step(CLASSIC_DUAL_PORTED_MEMORY_PRE); 375 387 } … … 377 389 LAST(RTEMS_SYSINIT_CLASSIC_DUAL_PORTED_MEMORY) 378 390 { 379 assert( _Objects_Get_maximum_index(&_Dual_ported_memory_Information) != 0);391 assert(info_is_init(&_Dual_ported_memory_Information, 1)); 380 392 next_step(CLASSIC_DUAL_PORTED_MEMORY_POST); 381 393 } … … 383 395 FIRST(RTEMS_SYSINIT_CLASSIC_RATE_MONOTONIC) 384 396 { 385 assert( _Objects_Get_maximum_index(&_Rate_monotonic_Information) == 0);397 assert(info_not_init(&_Rate_monotonic_Information)); 386 398 next_step(CLASSIC_RATE_MONOTONIC_PRE); 387 399 } … … 389 401 LAST(RTEMS_SYSINIT_CLASSIC_RATE_MONOTONIC) 390 402 { 391 assert( _Objects_Get_maximum_index(&_Rate_monotonic_Information) != 0);403 assert(info_is_init(&_Rate_monotonic_Information, 1)); 392 404 next_step(CLASSIC_RATE_MONOTONIC_POST); 393 405 } … … 395 407 FIRST(RTEMS_SYSINIT_CLASSIC_BARRIER) 396 408 { 397 assert( _Objects_Get_maximum_index(&_Barrier_Information) == 0);409 assert(info_not_init(&_Barrier_Information)); 398 410 next_step(CLASSIC_BARRIER_PRE); 399 411 } … … 401 413 LAST(RTEMS_SYSINIT_CLASSIC_BARRIER) 402 414 { 403 assert( _Objects_Get_maximum_index(&_Barrier_Information) != 0);415 assert(info_is_init(&_Barrier_Information, 1)); 404 416 next_step(CLASSIC_BARRIER_POST); 405 417 } … … 433 445 FIRST(RTEMS_SYSINIT_POSIX_THREADS) 434 446 { 435 assert( _Objects_Get_maximum_index(&_POSIX_Threads_Information.Objects) == 0);447 assert(info_not_init(&_POSIX_Threads_Information.Objects)); 436 448 next_step(POSIX_THREADS_PRE); 437 449 } … … 439 451 LAST(RTEMS_SYSINIT_POSIX_THREADS) 440 452 { 441 assert( _Objects_Get_maximum_index(&_POSIX_Threads_Information.Objects) != 0);453 assert(info_is_init(&_POSIX_Threads_Information.Objects, 1)); 442 454 next_step(POSIX_THREADS_POST); 443 455 } … … 445 457 FIRST(RTEMS_SYSINIT_POSIX_MESSAGE_QUEUE) 446 458 { 447 assert( _Objects_Get_maximum_index(&_POSIX_Message_queue_Information) == 0);459 assert(info_not_init(&_POSIX_Message_queue_Information)); 448 460 next_step(POSIX_MESSAGE_QUEUE_PRE); 449 461 } … … 451 463 LAST(RTEMS_SYSINIT_POSIX_MESSAGE_QUEUE) 452 464 { 453 assert( _Objects_Get_maximum_index(&_POSIX_Message_queue_Information) != 0);465 assert(info_is_init(&_POSIX_Message_queue_Information, 1)); 454 466 next_step(POSIX_MESSAGE_QUEUE_POST); 455 467 } … … 457 469 FIRST(RTEMS_SYSINIT_POSIX_SEMAPHORE) 458 470 { 459 assert( _Objects_Get_maximum_index(&_POSIX_Semaphore_Information) == 0);471 assert(info_not_init(&_POSIX_Semaphore_Information)); 460 472 next_step(POSIX_SEMAPHORE_PRE); 461 473 } … … 463 475 LAST(RTEMS_SYSINIT_POSIX_SEMAPHORE) 464 476 { 465 assert( _Objects_Get_maximum_index(&_POSIX_Semaphore_Information) != 0);477 assert(info_is_init(&_POSIX_Semaphore_Information, 1)); 466 478 next_step(POSIX_SEMAPHORE_POST); 467 479 } … … 470 482 FIRST(RTEMS_SYSINIT_POSIX_TIMER) 471 483 { 472 assert( _Objects_Get_maximum_index(&_POSIX_Timer_Information) == 0);484 assert(info_not_init(&_POSIX_Timer_Information)); 473 485 next_step(POSIX_TIMER_PRE); 474 486 } … … 476 488 LAST(RTEMS_SYSINIT_POSIX_TIMER) 477 489 { 478 assert( _Objects_Get_maximum_index(&_POSIX_Timer_Information) != 0);490 assert(info_is_init(&_POSIX_Timer_Information, 1)); 479 491 next_step(POSIX_TIMER_POST); 480 492 } … … 483 495 FIRST(RTEMS_SYSINIT_POSIX_SHM) 484 496 { 485 assert( _Objects_Get_maximum_index(&_POSIX_Shm_Information) == 0);497 assert(info_not_init(&_POSIX_Shm_Information)); 486 498 next_step(POSIX_SHM_PRE); 487 499 } … … 489 501 LAST(RTEMS_SYSINIT_POSIX_SHM) 490 502 { 491 assert( _Objects_Get_maximum_index(&_POSIX_Shm_Information) != 0);503 assert(info_is_init(&_POSIX_Shm_Information, 1)); 492 504 next_step(POSIX_SHM_POST); 493 505 } … … 513 525 FIRST(RTEMS_SYSINIT_POSIX_KEYS) 514 526 { 515 assert( _Objects_Get_maximum_index(&_POSIX_Keys_Information) == 0);527 assert(info_not_init(&_POSIX_Keys_Information)); 516 528 next_step(POSIX_KEYS_PRE); 517 529 } … … 519 531 LAST(RTEMS_SYSINIT_POSIX_KEYS) 520 532 { 521 assert( _Objects_Get_maximum_index(&_POSIX_Keys_Information) != 0);533 assert(info_is_init(&_POSIX_Keys_Information, 2)); 522 534 next_step(POSIX_KEYS_POST); 523 535 } … … 658 670 LAST_STEP(LAST); 659 671 660 static void Init(rtems_task_argument arg) 672 static void do_barrier_create(void) 673 { 674 rtems_status_code sc; 675 rtems_id id; 676 677 sc = rtems_barrier_create( 678 rtems_build_name('T', 'E', 'S', 'T'), 679 RTEMS_DEFAULT_ATTRIBUTES, 680 1, 681 &id 682 ); 683 rtems_test_assert(sc == RTEMS_SUCCESSFUL); 684 685 sc = rtems_barrier_delete(id); 686 rtems_test_assert(sc == RTEMS_SUCCESSFUL); 687 } 688 689 static void do_extensions_create(void) 690 { 691 rtems_status_code sc; 692 rtems_id id; 693 rtems_extensions_table table; 694 695 memset(&table, 0, sizeof(table)); 696 sc = rtems_extension_create( 697 rtems_build_name('T', 'E', 'S', 'T'), 698 &table, 699 &id 700 ); 701 rtems_test_assert(sc == RTEMS_SUCCESSFUL); 702 703 sc = rtems_extension_delete(id); 704 rtems_test_assert(sc == RTEMS_SUCCESSFUL); 705 } 706 707 static void do_message_queue_create(void) 708 { 709 rtems_status_code sc; 710 rtems_id id; 711 712 sc = rtems_message_queue_create( 713 rtems_build_name('T', 'E', 'S', 'T'), 714 1, 715 1, 716 RTEMS_DEFAULT_ATTRIBUTES, 717 &id 718 ); 719 rtems_test_assert(sc == RTEMS_SUCCESSFUL); 720 721 sc = rtems_message_queue_delete(id); 722 rtems_test_assert(sc == RTEMS_SUCCESSFUL); 723 } 724 725 static void do_partition_create(void) 726 { 727 rtems_status_code sc; 728 rtems_id id; 729 long buf[32]; 730 731 sc = rtems_partition_create( 732 rtems_build_name('T', 'E', 'S', 'T'), 733 buf, 734 sizeof(buf), 735 sizeof(buf), 736 RTEMS_DEFAULT_ATTRIBUTES, 737 &id 738 ); 739 rtems_test_assert(sc == RTEMS_SUCCESSFUL); 740 741 sc = rtems_partition_delete(id); 742 rtems_test_assert(sc == RTEMS_SUCCESSFUL); 743 } 744 745 static void do_period_create(void) 746 { 747 rtems_status_code sc; 748 rtems_id id; 749 750 sc = rtems_rate_monotonic_create( 751 rtems_build_name('T', 'E', 'S', 'T'), 752 &id 753 ); 754 rtems_test_assert(sc == RTEMS_SUCCESSFUL); 755 756 sc = rtems_rate_monotonic_delete(id); 757 rtems_test_assert(sc == RTEMS_SUCCESSFUL); 758 } 759 760 static void do_port_create(void) 761 { 762 rtems_status_code sc; 763 rtems_id id; 764 765 sc = rtems_port_create( 766 rtems_build_name('T', 'E', 'S', 'T'), 767 NULL, 768 NULL, 769 1, 770 &id 771 ); 772 rtems_test_assert(sc == RTEMS_SUCCESSFUL); 773 774 sc = rtems_port_delete(id); 775 rtems_test_assert(sc == RTEMS_SUCCESSFUL); 776 } 777 778 static void do_region_create(void) 779 { 780 rtems_status_code sc; 781 rtems_id id; 782 long buf[32]; 783 784 sc = rtems_region_create( 785 rtems_build_name('T', 'E', 'S', 'T'), 786 buf, 787 sizeof(buf), 788 1, 789 RTEMS_DEFAULT_ATTRIBUTES, 790 &id 791 ); 792 rtems_test_assert(sc == RTEMS_SUCCESSFUL); 793 794 sc = rtems_region_delete(id); 795 rtems_test_assert(sc == RTEMS_SUCCESSFUL); 796 } 797 798 static void do_semaphore_create(void) 799 { 800 rtems_status_code sc; 801 rtems_id id; 802 803 sc = rtems_semaphore_create( 804 rtems_build_name('T', 'E', 'S', 'T'), 805 0, 806 RTEMS_DEFAULT_ATTRIBUTES, 807 0, 808 &id 809 ); 810 rtems_test_assert(sc == RTEMS_SUCCESSFUL); 811 812 sc = rtems_semaphore_delete(id); 813 rtems_test_assert(sc == RTEMS_SUCCESSFUL); 814 } 815 816 static void do_task_create(void) 817 { 818 rtems_status_code sc; 819 rtems_id id; 820 821 sc = rtems_task_create( 822 rtems_build_name('T', 'E', 'S', 'T'), 823 1, 824 RTEMS_MINIMUM_STACK_SIZE, 825 RTEMS_DEFAULT_MODES, 826 RTEMS_DEFAULT_ATTRIBUTES, 827 &id 828 ); 829 rtems_test_assert(sc == RTEMS_SUCCESSFUL); 830 831 sc = rtems_task_delete(id); 832 rtems_test_assert(sc == RTEMS_SUCCESSFUL); 833 } 834 835 static void do_timer_create(void) 836 { 837 rtems_status_code sc; 838 rtems_id id; 839 840 sc = rtems_timer_create(rtems_build_name('T', 'E', 'S', 'T'), &id); 841 rtems_test_assert(sc == RTEMS_SUCCESSFUL); 842 843 sc = rtems_timer_delete(id); 844 rtems_test_assert(sc == RTEMS_SUCCESSFUL); 845 } 846 847 static void do_cleanup_push_pop(void) 661 848 { 662 849 pthread_cleanup_push(NULL, NULL); 663 850 pthread_cleanup_pop(0); 851 } 852 853 static void do_posix_mq_open(void) 854 { 855 struct mq_attr attr; 856 mqd_t mq; 857 int rv; 858 859 memset(&attr, 0, sizeof(attr)); 860 attr.mq_maxmsg = 1; 861 attr.mq_msgsize = 1; 862 mq = mq_open("mq", O_CREAT | O_RDWR, S_IRWXU | S_IRWXG | S_IRWXO, &attr); 863 rtems_test_assert(mq != (mqd_t) -1); 864 865 rv = mq_close(mq); 866 rtems_test_assert(rv == 0); 867 868 rv = mq_unlink("mq"); 869 rtems_test_assert(rv == 0); 870 } 871 872 static void do_posix_sem_open(void) 873 { 874 sem_t *sem; 875 int rv; 876 877 sem = sem_open("sem", O_CREAT | O_RDWR, S_IRWXU | S_IRWXG | S_IRWXO); 878 rtems_test_assert(sem != SEM_FAILED); 879 880 rv = sem_close(sem); 881 rtems_test_assert(rv == 0); 882 883 rv = sem_unlink("sem"); 884 rtems_test_assert(rv == 0); 885 } 886 887 static void do_posix_shm_open(void) 888 { 889 int fd; 890 int rv; 891 892 fd = shm_open("/shm", O_CREAT | O_RDWR, S_IRWXU | S_IRWXG | S_IRWXO); 893 rtems_test_assert(fd >= 0); 894 895 rv = close(fd); 896 rtems_test_assert(rv == 0); 897 898 rv = shm_unlink("/shm"); 899 rtems_test_assert(rv == 0); 900 } 901 902 static void do_posix_timer_create(void) 903 { 904 #ifdef RTEMS_POSIX_API 905 int rv; 906 timer_t timer; 907 908 rv = timer_create(CLOCK_REALTIME, NULL, &timer); 909 rtems_test_assert(rv == 0); 910 911 rv = timer_delete(timer); 912 rtems_test_assert(rv == 0); 913 #endif /* RTEMS_POSIX_API */ 914 } 915 916 static void Init(rtems_task_argument arg) 917 { 664 918 next_step(INIT_TASK); 919 do_barrier_create(); 920 do_extensions_create(); 921 do_message_queue_create(); 922 do_partition_create(); 923 do_period_create(); 924 do_port_create(); 925 do_region_create(); 926 do_semaphore_create(); 927 do_task_create(); 928 do_timer_create(); 929 do_cleanup_push_pop(); 930 do_posix_mq_open(); 931 do_posix_sem_open(); 932 do_posix_shm_open(); 933 do_posix_timer_create(); 665 934 TEST_END(); 666 935 exit(0); … … 673 942 674 943 #define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER 944 675 945 #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER 676 946 947 #define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 4 948 677 949 #define CONFIGURE_MAXIMUM_USER_EXTENSIONS 1 678 950 … … 691 963 #define CONFIGURE_MAXIMUM_SEMAPHORES 1 692 964 693 #define CONFIGURE_MAXIMUM_TASKS 1965 #define CONFIGURE_MAXIMUM_TASKS 2 694 966 695 967 #define CONFIGURE_MAXIMUM_TIMERS 1 … … 711 983 #define CONFIGURE_MAXIMUM_POSIX_KEYS 1 712 984 985 #define CONFIGURE_MESSAGE_BUFFER_MEMORY \ 986 CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(1, 1) 987 713 988 #define CONFIGURE_RTEMS_INIT_TASKS_TABLE 714 989
Note: See TracChangeset
for help on using the changeset viewer.