Ignore:
Timestamp:
Sep 21, 2018, 10:26:47 PM (4 years ago)
Author:
nicolas.van.phan@…
Message:

Remove y_max in all functions except dqdt_init()

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/kernel/kern/kernel_init.c

    r560 r561  
    621621
    622622                // compute target cluster for chdev[func,channel,direction]
    623                 uint32_t offset     = ext_chdev_gid % ( info->x_size * (info->y_max) ); // [FIXME]
    624                 uint32_t cx         = offset / (info->y_max); // [FIXME]
    625                 uint32_t cy         = offset % (info->y_max); // [FIXME]
    626                 uint32_t target_cxy = (cx<<info->y_width) + cy;
    627 
     623                uint32_t offset;
     624                uint32_t cx;
     625                uint32_t cy;
     626                uint32_t target_cxy;
     627                while (1) {
     628                    offset     = ext_chdev_gid % ( info->x_size * (info->y_size) );
     629                    cx         = offset / (info->y_size);
     630                    cy         = offset % (info->y_size);
     631                    target_cxy = (cx<<info->y_width) + cy;
     632                    // ext_chdev_gid that results in empty target clusters are skipped
     633                    if ( cluster_info_is_active( LOCAL_CLUSTER->cluster_info[cx][cy] ) == 0 ) {
     634                        ext_chdev_gid++;
     635                    } else { // The ext_chdev_gid resulted in a full target cluster
     636                        break;
     637                    }
     638                }
    628639                // allocate and initialize a local chdev
    629640                // when local cluster matches target cluster
Note: See TracChangeset for help on using the changeset viewer.