1 /* go-send-nb-big.c -- nonblocking send of something big 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. */
12 __go_send_nonblocking_big (struct __go_channel
* channel
, const void *val
)
14 uintptr_t element_size
;
21 element_size
= channel
->element_type
->__size
;
22 alloc_size
= (element_size
+ sizeof (uint64_t) - 1) / sizeof (uint64_t);
24 if (!__go_send_nonblocking_acquire (channel
))
27 offset
= channel
->next_store
* alloc_size
;
28 __builtin_memcpy (&channel
->data
[offset
], val
, element_size
);
30 __go_send_release (channel
);