1 /* go-send-big.c -- send something bigger than uint64_t on a channel.
3 Copyright 2009 The Go Authors. All rights reserved.
4 Use of this source code is governed by a BSD-style
5 license that can be found in the LICENSE file. */
13 __go_send_big (struct __go_channel
* channel
, const void *val
, _Bool for_select
)
19 __go_panic_msg ("send to nil channel");
21 alloc_size
= ((channel
->element_size
+ sizeof (uint64_t) - 1)
24 if (!__go_send_acquire (channel
, for_select
))
27 offset
= channel
->next_store
* alloc_size
;
28 __builtin_memcpy (&channel
->data
[offset
], val
, channel
->element_size
);
30 __go_send_release (channel
);