Changeset c1ef834 in rtems


Ignore:
Timestamp:
Jun 3, 1997, 3:12:23 PM (23 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, 5, master
Children:
4c3340c
Parents:
d348ad96
Message:

Fixed problems which prevented the test from compiling and running to
completion.

Location:
c/src/ada-tests/sptests/sp09
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • c/src/ada-tests/sptests/sp09/sp09.scn

    rd348ad96 rc1ef834  
    9898TA1 - message_queue_create - Q 1 - INVALID_NAME
    9999TA1 - message_queue_create - Q 1 - MP_NOT_CONFIGURED
    100 TA1 - message_queue_create - Q 1 - LIMIT - SUCCESSFUL
     100TA1 - message_queue_create - Q 1 - 2 DEEP - SUCCESSFUL
    101101TA1 - message_queue_create - Q 2 - TOO_MANY
    102102TA1 - message_queue_delete - unknown INVALID_ID
     
    114114<pause - screen 8>
    115115TA1 - message_queue_delete - Q 1 - SUCCESSFUL
    116 TA1 - message_queue_create - Q 1 - LIMIT - SUCCESSFUL
     116TA1 - message_queue_create - Q 1 - 2 DEEP - SUCCESSFUL
    117117TA1 - message_queue_send - BUFFER 1 TO Q 1 - SUCCESSFUL
    118118TA1 - message_queue_send - BUFFER 2 TO Q 1 - SUCCESSFUL
    119119TA1 - message_queue_send - BUFFER 3 TO Q 1 - TOO_MANY
    120120TA1 - message_queue_delete - Q 1 - SUCCESSFUL
    121 TA1 - message_queue_create - Q 1 - LIMIT - SUCCESSFUL
     121TA1 - message_queue_create - Q 1 - 3 DEEP - SUCCESSFUL
    122122TA1 - message_queue_send - BUFFER 1 TO Q 1 - SUCCESSFUL
    123123TA1 - message_queue_send - BUFFER 2 TO Q 1 - SUCCESSFUL
    124 TA1 - message_queue_send - BUFFER 3 TO Q 1 - UNSATISFIED
     124TA1 - message_queue_send - BUFFER 3 TO Q 1 - SUCCESSFUL
     125TA1 - message_queue_send - BUFFER 4 TO Q 1 - TOO_MANY
    125126TA1 - message_queue_delete - Q 1 - SUCCESSFUL
    126 TA1 - message_queue_create - Q 1 - LIMIT - SUCCESSFUL
     127TA1 - message_queue_create - Q 1 - 3 DEEP - SUCCESSFUL
    127128TA1 - task_start - start TA3 - SUCCESSFUL
    128129TA1 - task_wake_after - yield processor - SUCCESSFUL
  • c/src/ada-tests/sptests/sp09/sptest.adb

    rd348ad96 rc1ef834  
    585585         TASK_NAME,
    586586         1,
    587          RTEMS.CONFIGURATION.WORKSPACE_SIZE,
     587         RTEMS.CONFIGURATION.WORK_SPACE_SIZE,
    588588         RTEMS.DEFAULT_MODES,
    589589         RTEMS.DEFAULT_ATTRIBUTES,
     
    878878   procedure SCREEN_5
    879879   is
    880       COUNT          : RTEMS.UNSIGNED32;
    881880      STATUS         : RTEMS.STATUS_CODES;
    882881   begin
     
    886885         1,
    887886         RTEMS.DEFAULT_ATTRIBUTES,
     887         RTEMS.NO_PRIORITY,
    888888         SPTEST.JUNK_ID,
    889889         STATUS
     
    900900         1,
    901901         RTEMS.DEFAULT_ATTRIBUTES,
     902         RTEMS.NO_PRIORITY,
    902903         SPTEST.SEMAPHORE_ID( 1 ),
    903904         STATUS
     
    913914         1,
    914915         RTEMS.BINARY_SEMAPHORE,
     916         RTEMS.NO_PRIORITY,
    915917         SPTEST.SEMAPHORE_ID( 2 ),
    916918         STATUS
     
    922924      TEXT_IO.PUT_LINE( "TA1 - semaphore_create - 2 - SUCCESSFUL" );
    923925
    924       RTEMS.SEMAPHORE_CREATE(
    925          SPTEST.SEMAPHORE_NAME( 3 ),
    926          1,
    927          RTEMS.DEFAULT_ATTRIBUTES,
    928          SPTEST.JUNK_ID,
    929          STATUS
    930       );
     926      loop
     927         RTEMS.SEMAPHORE_CREATE(
     928            SPTEST.SEMAPHORE_NAME( 3 ),
     929            1,
     930            RTEMS.DEFAULT_ATTRIBUTES,
     931            RTEMS.NO_PRIORITY,
     932            SPTEST.JUNK_ID,
     933            STATUS
     934         );
     935
     936         exit when not RTEMS.ARE_STATUSES_EQUAL( STATUS, RTEMS.SUCCESSFUL );
     937      end loop;
     938
    931939      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
    932940         STATUS,
     
    940948         1,
    941949         RTEMS.INHERIT_PRIORITY + RTEMS.BINARY_SEMAPHORE + RTEMS.FIFO,
     950         RTEMS.NO_PRIORITY,
    942951         SPTEST.JUNK_ID,
    943952         STATUS
     
    954963         1,
    955964         RTEMS.INHERIT_PRIORITY + RTEMS.COUNTING_SEMAPHORE + RTEMS.PRIORITY,
     965         RTEMS.NO_PRIORITY,
    956966         SPTEST.JUNK_ID,
    957967         STATUS
     
    968978         2,
    969979         RTEMS.BINARY_SEMAPHORE,
     980         RTEMS.NO_PRIORITY,
    970981         SPTEST.JUNK_ID,
    971982         STATUS
     
    982993         1,
    983994         RTEMS.GLOBAL,
     995         RTEMS.NO_PRIORITY,
    984996         SPTEST.JUNK_ID,
    985997         STATUS
     
    10461058   procedure SCREEN_6
    10471059   is
    1048       COUNT          : RTEMS.UNSIGNED32;
    10491060      STATUS         : RTEMS.STATUS_CODES;
    10501061   begin
     
    11881199   procedure SCREEN_7
    11891200   is
    1190       BUFFER         : RTEMS.BUFFER;
    1191       BUFFER_POINTER : RTEMS.BUFFER_POINTER;
     1201      BUFFER         : SPTEST.BUFFER;
     1202      BUFFER_POINTER : RTEMS.ADDRESS;
    11921203      COUNT          : RTEMS.UNSIGNED32;
     1204      MESSAGE_SIZE   : RTEMS.UNSIGNED32;
    11931205      STATUS         : RTEMS.STATUS_CODES;
    11941206   begin
     1207
     1208      BUFFER_POINTER := BUFFER'ADDRESS;
    11951209
    11961210      RTEMS.MESSAGE_QUEUE_BROADCAST(
    11971211         100,
    11981212         BUFFER_POINTER,
     1213         16,
    11991214         COUNT,
    12001215         STATUS
     
    12081223         "TA1 - message_queue_broadcast - INVALID_ID"
    12091224      );
    1210 
    1211       BUFFER_POINTER := RTEMS.TO_BUFFER_POINTER( BUFFER'ADDRESS );
    12121225
    12131226      RTEMS.MESSAGE_QUEUE_CREATE(
    12141227         0,
    12151228         3,
     1229         16,
    12161230         RTEMS.DEFAULT_ATTRIBUTES,
    12171231         SPTEST.JUNK_ID,
     
    12301244         SPTEST.QUEUE_NAME( 1 ),
    12311245         1,
     1246         16,
    12321247         RTEMS.GLOBAL,
    12331248         SPTEST.JUNK_ID,
     
    12451260         SPTEST.QUEUE_NAME( 1 ),
    12461261         2,
    1247          RTEMS.LIMIT,
     1262         16,
     1263         RTEMS.DEFAULT_ATTRIBUTES,
    12481264         SPTEST.QUEUE_ID( 1 ),
    12491265         STATUS
     
    12541270      );
    12551271      TEXT_IO.PUT_LINE(
    1256          "TA1 - message_queue_create - Q 1 - LIMIT - SUCCESSFUL"
     1272         "TA1 - message_queue_create - Q 1 - 2 DEEP - SUCCESSFUL"
    12571273      );
    12581274
     
    12601276         SPTEST.QUEUE_NAME( 2 ),
    12611277         1,
     1278         16,
    12621279         RTEMS.DEFAULT_ATTRIBUTES,
    12631280         SPTEST.JUNK_ID,
     
    13191336         RTEMS.DEFAULT_OPTIONS,
    13201337         RTEMS.NO_TIMEOUT,
     1338         MESSAGE_SIZE,
    13211339         STATUS
    13221340      );
     
    13331351         RTEMS.NO_WAIT,
    13341352         RTEMS.NO_TIMEOUT,
     1353         MESSAGE_SIZE,
    13351354         STATUS
    13361355      );
     
    13521371         RTEMS.DEFAULT_OPTIONS,
    13531372         3 * TEST_SUPPORT.TICKS_PER_SECOND,
     1373         MESSAGE_SIZE,
    13541374         STATUS
    13551375      );
     
    13631383      );
    13641384
    1365       RTEMS.MESSAGE_QUEUE_SEND( 100, BUFFER_POINTER, STATUS );
     1385      RTEMS.MESSAGE_QUEUE_SEND( 100, BUFFER_POINTER, 16, STATUS );
    13661386      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
    13671387         STATUS,
     
    13741394         SPTEST.QUEUE_ID( 1 ),
    13751395         BUFFER_POINTER,
     1396         16,
    13761397         STATUS
    13771398      );
     
    13841405         SPTEST.QUEUE_ID( 1 ),
    13851406         BUFFER_POINTER,
     1407         16,
    13861408         STATUS
    13871409      );
     
    13941416         SPTEST.QUEUE_ID( 1 ),
    13951417         BUFFER_POINTER,
     1418         16,
    13961419         STATUS
    13971420      );
     
    14141437   procedure SCREEN_8
    14151438   is
    1416       BUFFER         : RTEMS.BUFFER;
    1417       BUFFER_POINTER : RTEMS.BUFFER_POINTER;
     1439      BUFFER         : SPTEST.BUFFER;
     1440      BUFFER_POINTER : RTEMS.ADDRESS;
    14181441      STATUS         : RTEMS.STATUS_CODES;
    14191442   begin
    14201443
    1421       BUFFER_POINTER := RTEMS.TO_BUFFER_POINTER( BUFFER'ADDRESS );
     1444      BUFFER_POINTER := BUFFER'ADDRESS;
    14221445
    14231446      RTEMS.MESSAGE_QUEUE_DELETE( SPTEST.QUEUE_ID( 1 ), STATUS );
     
    14331456         SPTEST.QUEUE_NAME( 1 ),
    14341457         2,
    1435          RTEMS.LIMIT,
     1458         16,
     1459         RTEMS.DEFAULT_ATTRIBUTES,
    14361460         SPTEST.QUEUE_ID( 1 ),
    14371461         STATUS
     
    14421466      );
    14431467      TEXT_IO.PUT_LINE(
    1444          "TA1 - message_queue_create - Q 1 - LIMIT - SUCCESSFUL"
     1468         "TA1 - message_queue_create - Q 1 - 2 DEEP - SUCCESSFUL"
    14451469      );
    14461470
     
    14481472         SPTEST.QUEUE_ID( 1 ),
    14491473         BUFFER_POINTER,
     1474         16,
    14501475         STATUS
    14511476      );
     
    14581483         SPTEST.QUEUE_ID( 1 ),
    14591484         BUFFER_POINTER,
     1485         16,
    14601486         STATUS
    14611487      );
     
    14681494         SPTEST.QUEUE_ID( 1 ),
    14691495         BUFFER_POINTER,
     1496         16,
    14701497         STATUS
    14711498      );
     
    14911518         SPTEST.QUEUE_NAME( 1 ),
    14921519         3,
    1493          RTEMS.LIMIT,
     1520         16,
     1521         RTEMS.DEFAULT_ATTRIBUTES,
    14941522         SPTEST.QUEUE_ID( 1 ),
    14951523         STATUS
     
    15001528      );
    15011529      TEXT_IO.PUT_LINE(
    1502          "TA1 - message_queue_create - Q 1 - LIMIT - SUCCESSFUL"
     1530         "TA1 - message_queue_create - Q 1 - 3 DEEP - SUCCESSFUL"
    15031531      );
    15041532
     
    15061534         SPTEST.QUEUE_ID( 1 ),
    15071535         BUFFER_POINTER,
     1536         16,
    15081537         STATUS
    15091538      );
     
    15161545         SPTEST.QUEUE_ID( 1 ),
    15171546         BUFFER_POINTER,
     1547         16,
    15181548         STATUS
    15191549      );
     
    15261556         SPTEST.QUEUE_ID( 1 ),
    15271557         BUFFER_POINTER,
    1528          STATUS
    1529       );
    1530       TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
    1531          STATUS,
    1532          RTEMS.UNSATISFIED,
     1558         16,
     1559         STATUS
     1560      );
     1561      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_SEND" );
     1562      TEXT_IO.PUT_LINE(
     1563         "TA1 - message_queue_send - BUFFER 3 TO Q 1 - SUCCESSFUL"
     1564      );
     1565
     1566      RTEMS.MESSAGE_QUEUE_SEND(
     1567         SPTEST.QUEUE_ID( 1 ),
     1568         BUFFER_POINTER,
     1569         16,
     1570         STATUS
     1571      );
     1572      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
     1573         STATUS,
     1574         RTEMS.TOO_MANY,
    15331575         "MESSAGE_QUEUE_SEND TOO MANY TO LIMITED QUEUE"
    15341576      );
    15351577      TEXT_IO.PUT_LINE(
    1536          "TA1 - message_queue_send - BUFFER 3 TO Q 1 - UNSATISFIED"
     1578         "TA1 - message_queue_send - BUFFER 4 TO Q 1 - TOO_MANY"
    15371579      );
    15381580
     
    15491591         SPTEST.QUEUE_NAME( 1 ),
    15501592         2,
    1551          RTEMS.LIMIT,
     1593         16,
     1594         RTEMS.DEFAULT_ATTRIBUTES,
    15521595         SPTEST.QUEUE_ID( 1 ),
    15531596         STATUS
     
    15581601      );
    15591602      TEXT_IO.PUT_LINE(
    1560          "TA1 - message_queue_create - Q 1 - LIMIT - SUCCESSFUL"
     1603         "TA1 - message_queue_create - Q 1 - 3 DEEP - SUCCESSFUL"
    15611604      );
    15621605
     
    22502293         0,
    22512294         SPTEST.REGION_GOOD_AREA'ADDRESS,
    2252          128,
     2295         16#40#,
    22532296         32,
    22542297         RTEMS.DEFAULT_ATTRIBUTES,
     
    22662309         SPTEST.REGION_NAME( 1 ),
    22672310         SPTEST.REGION_BAD_AREA'ADDRESS,
    2268          128,
     2311         16#40#,
    22692312         32,
    22702313         RTEMS.DEFAULT_ATTRIBUTES,
     
    22822325         SPTEST.REGION_NAME( 1 ),
    22832326         SPTEST.REGION_GOOD_AREA'ADDRESS,
    2284          128,
     2327         16#40#,
    22852328         34,
    22862329         RTEMS.DEFAULT_ATTRIBUTES,
     
    22992342         SPTEST.REGION_GOOD_AREA( SPTEST.REGION_START_OFFSET )'ADDRESS,
    23002343         SPTEST.REGION_LENGTH,
    2301          128,
     2344         16#40#,
    23022345         RTEMS.DEFAULT_ATTRIBUTES,
    23032346         SPTEST.REGION_ID( 1 ),
     
    23102353         SPTEST.REGION_NAME( 1 ),
    23112354         SPTEST.REGION_GOOD_AREA'ADDRESS,
    2312          128,
    2313          32,
     2355         SPTEST.REGION_LENGTH,
     2356         16#40#,
    23142357         RTEMS.DEFAULT_ATTRIBUTES,
    23152358         SPTEST.JUNK_ID,
     
    23492392      RTEMS.REGION_GET_SEGMENT(
    23502393         100,
    2351          128,
     2394         16#40#,
    23522395         RTEMS.DEFAULT_OPTIONS,
    23532396         RTEMS.NO_TIMEOUT,
     
    23642407      RTEMS.REGION_GET_SEGMENT(
    23652408         SPTEST.REGION_ID( 1 ),
    2366          RTEMS.UNSIGNED32'LAST,
     2409         (SPTEST.REGION_GOOD_AREA'SIZE / 8) * 2,
    23672410         RTEMS.DEFAULT_OPTIONS,
    23682411         RTEMS.NO_TIMEOUT,
     
    23902433      RTEMS.REGION_GET_SEGMENT(
    23912434         SPTEST.REGION_ID( 1 ),
    2392          384,
     2435         SPTEST.REGION_LENGTH / 2,
    23932436         RTEMS.NO_WAIT,
    23942437         RTEMS.NO_TIMEOUT,
     
    24602503      RTEMS.DEBUG_DISABLE( RTEMS.DEBUG_REGION );
    24612504
    2462       OFFSET := RTEMS.SUBTRACT(
    2463                    SEGMENT_ADDRESS_1,
    2464                    SPTEST.REGION_GOOD_AREA'ADDRESS
    2465                 ) / 4;
    2466 
    2467       -- bad FRONT_FLAG error
    2468 
    2469       GOOD_FRONT_FLAG := SPTEST.REGION_GOOD_AREA( OFFSET - 1 );
    2470       SPTEST.REGION_GOOD_AREA( OFFSET - 1 ) := GOOD_FRONT_FLAG + 2;
    2471 
    2472       RTEMS.REGION_RETURN_SEGMENT(
    2473          SPTEST.REGION_ID( 1 ),
    2474          SEGMENT_ADDRESS_1,
    2475          STATUS
    2476       );
    2477       TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
    2478          STATUS,
    2479          RTEMS.INVALID_ADDRESS,
    2480          "REGION_RETURN_SEGMENT WITH BACK_FLAG /= FRONT_FLAG"
    2481       );
    2482       TEXT_IO.PUT_LINE(
    2483          "TA1 - region_return_segment - INVALID_ADDRESS"
    2484       );
    2485 
    2486       SPTEST.REGION_GOOD_AREA( OFFSET - 1 ) := GOOD_FRONT_FLAG;
    2487 
    2488       -- bad BACK_FLAG error
    2489 
    2490       GOOD_BACK_FLAG := SPTEST.REGION_GOOD_AREA( OFFSET - 2 );
    2491       SPTEST.REGION_GOOD_AREA( OFFSET - 2 ) := 1024;
    2492 
    2493       RTEMS.REGION_RETURN_SEGMENT(
    2494          SPTEST.REGION_ID( 1 ),
    2495          SEGMENT_ADDRESS_1,
    2496          STATUS
    2497       );
    2498       TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
    2499          STATUS,
    2500          RTEMS.INVALID_ADDRESS,
    2501          "REGION_RETURN_SEGMENT WITH BACK_FLAG /= FRONT_FLAG"
    2502       );
    2503       TEXT_IO.PUT_LINE(
    2504          "TA1 - region_return_segment - INVALID_ADDRESS"
    2505       );
    2506 
    2507       SPTEST.REGION_GOOD_AREA( OFFSET - 2 ) := GOOD_BACK_FLAG;
     2505      OFFSET := 0;
     2506      GOOD_BACK_FLAG := 0;
     2507      GOOD_FRONT_FLAG := 0;
     2508
     2509      TEXT_IO.PUT_LINE(
     2510         "TA1 - region_return_segment - INVALID_ADDRESS - SKIPPED"
     2511      );
     2512      TEXT_IO.PUT_LINE(
     2513         "TA1 - region_return_segment - INVALID_ADDRESS - SKIPPED"
     2514      );
     2515
     2516
     2517--      OFFSET := RTEMS.SUBTRACT(
     2518--                   SEGMENT_ADDRESS_1,
     2519--                   SPTEST.REGION_GOOD_AREA'ADDRESS
     2520--                ) / 4;
     2521--
     2522--     
     2523--      -- bad FRONT_FLAG error
     2524--
     2525--      GOOD_FRONT_FLAG := SPTEST.REGION_GOOD_AREA( OFFSET - 1 );
     2526--      SPTEST.REGION_GOOD_AREA( OFFSET - 1 ) := GOOD_FRONT_FLAG + 2;
     2527--
     2528--      RTEMS.REGION_RETURN_SEGMENT(
     2529--         SPTEST.REGION_ID( 1 ),
     2530--         SEGMENT_ADDRESS_1,
     2531--         STATUS
     2532--      );
     2533--      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
     2534--         STATUS,
     2535--         RTEMS.INVALID_ADDRESS,
     2536--         "REGION_RETURN_SEGMENT WITH BACK_FLAG /= FRONT_FLAG"
     2537--      );
     2538--      TEXT_IO.PUT_LINE(
     2539--         "TA1 - region_return_segment - INVALID_ADDRESS"
     2540--      );
     2541--
     2542--      SPTEST.REGION_GOOD_AREA( OFFSET - 1 ) := GOOD_FRONT_FLAG;
     2543--
     2544--      -- bad BACK_FLAG error
     2545--
     2546--      GOOD_BACK_FLAG := SPTEST.REGION_GOOD_AREA( OFFSET - 2 );
     2547--      SPTEST.REGION_GOOD_AREA( OFFSET - 2 ) := 1024;
     2548--
     2549--      RTEMS.REGION_RETURN_SEGMENT(
     2550--         SPTEST.REGION_ID( 1 ),
     2551--         SEGMENT_ADDRESS_1,
     2552--         STATUS
     2553--      );
     2554--      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(
     2555--         STATUS,
     2556--         RTEMS.INVALID_ADDRESS,
     2557--         "REGION_RETURN_SEGMENT WITH BACK_FLAG /= FRONT_FLAG"
     2558--      );
     2559--      TEXT_IO.PUT_LINE(
     2560--         "TA1 - region_return_segment - INVALID_ADDRESS"
     2561--      );
     2562--
     2563--      SPTEST.REGION_GOOD_AREA( OFFSET - 2 ) := GOOD_BACK_FLAG;
    25082564
    25092565      TEXT_IO.PUT_LINE( "TA1 - debug_enable - DEBUG_REGION" );
     
    30683124      ARGUMENT : in     RTEMS.TASK_ARGUMENT
    30693125   ) is
    3070       BUFFER         : RTEMS.BUFFER;
    3071       BUFFER_POINTER : RTEMS.BUFFER_POINTER;
     3126      BUFFER         : SPTEST.BUFFER;
     3127      BUFFER_POINTER : RTEMS.ADDRESS;
     3128      MESSAGE_SIZE   : RTEMS.UNSIGNED32;
    30723129      STATUS         : RTEMS.STATUS_CODES;
    30733130   begin
    30743131
    3075       BUFFER_POINTER := RTEMS.TO_BUFFER_POINTER( BUFFER'ADDRESS );
     3132      BUFFER_POINTER := BUFFER'ADDRESS;
    30763133
    30773134      TEXT_IO.PUT_LINE(
     
    30833140         RTEMS.DEFAULT_OPTIONS,
    30843141         RTEMS.NO_TIMEOUT,
     3142         MESSAGE_SIZE,
    30853143         STATUS
    30863144      );
  • c/src/ada-tests/sptests/sp09/sptest.ads

    rd348ad96 rc1ef834  
    2929
    3030--
     31--  Buffer Record similar to that used by RTEMS 3.2.1.  Using this
     32--  avoids changes to the test.
     33--
     34
     35   type BUFFER is
     36      record
     37         FIELD1 : RTEMS.UNSIGNED32;   -- TEMPORARY UNTIL VARIABLE LENGTH
     38         FIELD2 : RTEMS.UNSIGNED32;
     39         FIELD3 : RTEMS.UNSIGNED32;
     40         FIELD4 : RTEMS.UNSIGNED32;
     41      end record;
     42
     43--
    3144--  These arrays contain the IDs and NAMEs of all RTEMS tasks created
    3245--  by this test.
Note: See TracChangeset for help on using the changeset viewer.