Patent ID: 6038592
Filing Date: 2000-03-14
Classification: H04L

Abstract:
A method of multicasting messages to a plurality of destination users (152, 154) in a communications system comprising a memory (100) shared by said destination users and accessed by said users through a data store bus (101), said memory (100) being organized in a plurality of data buffers controlled by a plurality of control blocks, wherein each message to be multicast is composed of chained data buffers, and wherein to each destination user is associated a user queue which stores the control blocks of the messages of said user, said user queue being controlled by a user queue control block,said method of multicasting messages comprising the steps of:(a) organizing said plurality of control blocks in a plurality of direct control blocks (DCB) wherein each said direct control block is associated with a data buffer whose address has an assigned relationship with the address of the corresponding direct control block;(b) building a free direct control block queue (FDCBQ) which stores the addresses of all free direct control blocks and chaining said free direct control blocks, said queue being controlled by a free direct queue control block (FDQCB) which stores the addresses of the first and the last free direct control blocks respectively in a head (H) field and a tail (T) field;(c) organizing said plurality of control blocks in a plurality of indirect control blocks (ICB) with each indirect control block having subfields arranged to enable a multicast function to be performed message by message;(d) building a free indirect control block queue (FICBQ) which stores the addresses of all the free indirect control block and chaining said free indirect control blocks, said indirect control block queue being controlled by a free indirect queue control block (FIQCB) which stores the addresses of the first and the last free indirect control blocks respectively in its head (H) field and its tail (T) field;(e) leasing a necessary number of free direct control blocks from said free direct control block queue (FDCBQ), each free direct control block being associated with a free data buffer, in order to store the message received in said free data buffer;(f) storing in said free direct control blocks the information relative to the associated data buffers which constitute the original message;(g) enqueuing said message in a message queue of a selected user by enqueuing the associated direct control blocks in said selected user queue;(h) leasing successively a free indirect control block from the free indirect control block queue (FICBQ) to store information relative to the message to be multicast in each of said indirect control blocks for each multicasting operations;(i) storing the information relative to the message to be multicast in each one of said free indirect control blocks, each indirect control block pointing to the direct control block corresponding to the first data buffer of the original message, each one of said indirect control blocks representing a duplicated message, and(j) enqueuing said indirect control block in the message queue of each user to which the message has to be transmitted, for each one of the multicasting operations.