void draw_thread(void *arg) { struct vfd_ioctl_data *data; struct vfd_ioctl_data draw_data; unsigned char buf[17]; int count = 0; int pos = 0; data = (struct vfd_ioctl_data *)arg; draw_data.length = data->length; memset(draw_data.data, 0, sizeof(draw_data.data)); memcpy(draw_data.data,data->data,data->length); thread_stop = 0; count = utf8_len(&draw_data.data[0], draw_data.length); if(count > mode_digit) { while(pos < draw_data.length) { if(kthread_should_stop()) { thread_stop = 1; return; } clear_display(); memset(buf,0, sizeof(buf)); int countb = utf8_count(&draw_data.data[pos], draw_data.length - pos, 8); memcpy(buf, &draw_data.data[pos], countb); YWPANEL_VFD_ShowString(buf); msleep(200); if (draw_data.data[pos] > 128) { pos += 2; } else { pos += 1; } } } if(count > 0) { clear_display(); memset(buf,0, sizeof(buf)); int countb = utf8_count(&draw_data.data[0], draw_data.length, 8); memcpy(buf, draw_data.data, countb); YWPANEL_VFD_ShowString(buf); } else VFD_clr(); thread_stop = 1; }
int main(int count, char * arguments []) { printf("sizeof PointyInt: %zu\n", sizeof(PointyInt)); printf("sizeof void *: %zu\n", sizeof(void *)); printf("size of long long int: %zu\n", sizeof(long long int)); printf("sizeof List: %zu\n", sizeof(List)); for (int i = 0; i < count; i++) { long long int x = parse_integer(arguments[i]); printf("integer value of '%s': %lld (error: %d)\n", arguments[i], x, EINVAL == errno); printf("strlen: %zu utf8_count: %zu\n", strlen(arguments[i]), utf8_count(arguments[i])); } printf("%s\n", format("%p is a goat", main)); return 0; }