Rev 4351 | Rev 4505 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4351 | Rev 4395 | ||
---|---|---|---|
Line 127... | Line 127... | ||
127 | * @returns The packet of dimensions at least as given. |
127 | * @returns The packet of dimensions at least as given. |
128 | * @returns NULL if there is not enough memory left. |
128 | * @returns NULL if there is not enough memory left. |
129 | */ |
129 | */ |
130 | packet_t packet_create( size_t length, size_t addr_len, size_t max_prefix, size_t max_content, size_t max_suffix ); |
130 | packet_t packet_create( size_t length, size_t addr_len, size_t max_prefix, size_t max_content, size_t max_suffix ); |
131 | 131 | ||
132 | /** Initializes the packet according to the given dimensions. |
132 | /** Clears and initializes the packet according to the given dimensions. |
133 | * @param packet The packet to be initialized. Input parameter. |
133 | * @param packet The packet to be initialized. Input parameter. |
134 | * @param addr_len The source and destination addresses maximal length in bytes. Input parameter. |
134 | * @param addr_len The source and destination addresses maximal length in bytes. Input parameter. |
135 | * @param max_prefix The maximal prefix length in bytes. Input parameter. |
135 | * @param max_prefix The maximal prefix length in bytes. Input parameter. |
136 | * @param max_content The maximal content length in bytes. Input parameter. |
136 | * @param max_content The maximal content length in bytes. Input parameter. |
137 | * @param max_suffix The maximal suffix length in bytes. Input parameter. |
137 | * @param max_suffix The maximal suffix length in bytes. Input parameter. |
Line 256... | Line 256... | ||
256 | if( packet == MAP_FAILED ) return NULL; |
256 | if( packet == MAP_FAILED ) return NULL; |
257 | ++ ps_globals.count; |
257 | ++ ps_globals.count; |
258 | packet->packet_id = ps_globals.count; |
258 | packet->packet_id = ps_globals.count; |
259 | packet->length = length; |
259 | packet->length = length; |
260 | packet_init( packet, addr_len, max_prefix, max_content, max_suffix ); |
260 | packet_init( packet, addr_len, max_prefix, max_content, max_suffix ); |
261 | packet->magic_value = PACKET_MAGIC_VALUE; |
- | |
262 | if( ERROR_OCCURRED( pm_add( packet ))){ |
261 | if( ERROR_OCCURRED( pm_add( packet ))){ |
263 | munmap( packet, packet->length ); |
262 | munmap( packet, packet->length ); |
264 | return NULL; |
263 | return NULL; |
265 | } |
264 | } |
266 | packet_release( packet ); |
265 | packet_release( packet ); |
267 | return packet; |
266 | return packet; |
268 | } |
267 | } |
269 | 268 | ||
270 | void packet_init( packet_t packet, size_t addr_len, size_t max_prefix, size_t max_content, size_t max_suffix ){ |
269 | void packet_init( packet_t packet, size_t addr_len, size_t max_prefix, size_t max_content, size_t max_suffix ){ |
- | 270 | int length; |
|
- | 271 | ||
- | 272 | // clear whole packet |
|
- | 273 | length = packet->length; |
|
- | 274 | bzero( packet, packet->length ); |
|
- | 275 | packet->length = length; |
|
- | 276 | packet->magic_value = PACKET_MAGIC_VALUE; |
|
- | 277 | /* // clear the packet header |
|
271 | packet->order = 0; |
278 | packet->order = 0; |
272 | packet->metric = 0; |
279 | packet->metric = 0; |
273 | packet->previous = 0; |
280 | packet->previous = 0; |
274 | packet->next = 0; |
281 | packet->next = 0; |
275 | packet->addr_len = addr_len; |
282 | packet->addr_len = 0; |
276 | packet->src_addr = sizeof( struct packet ); |
283 | */ packet->src_addr = sizeof( struct packet ); |
277 | packet->dest_addr = packet->src_addr + packet->addr_len; |
284 | packet->dest_addr = packet->src_addr + addr_len; |
278 | packet->max_prefix = max_prefix; |
285 | packet->max_prefix = max_prefix; |
279 | packet->max_content = max_content; |
286 | packet->max_content = max_content; |
280 | packet->data_start = packet->dest_addr + packet->addr_len + packet->max_prefix; |
287 | packet->data_start = packet->dest_addr + addr_len + packet->max_prefix; |
281 | packet->data_end = packet->data_start; |
288 | packet->data_end = packet->data_start; |
282 | } |
289 | } |
283 | 290 | ||
284 | int packet_reply( const packet_t packet ){ |
291 | int packet_reply( const packet_t packet ){ |
285 | ipc_callid_t callid; |
292 | ipc_callid_t callid; |