You're probably not clearing the "data ready" condition on the socket in
the callback. As soon as you return to main event loop, the socket still
has data ready.

On Mon, Dec 14, 2015 at 10:07 PM, <neil...@emerson.com> wrote:

> Hi, all
>
>
>
> I upload the glib-2.0 library  from 2.38.2 to 2.44.1, then the cpu usage
> to 100%.
>
> After testing , I find the problem is caused by g_io_add_watch function.
> Following is the part code about the glib.
>
>
>
>                struct sockaddr_can addr;
>
>                 struct ifreq ifr;
>
>                 int loopback = 0;
>
>                 gint fd;
>
>                 GIOChannel *io;
>
>                 guint ev_id;
>
>
>
>                 if (getenv("CANLOOPBACK"))
>
>                                 loopback = 1;
>
>
>
>                 memset(&addr, 0, sizeof(addr));
>
>                 memset(&ifr, 0, sizeof(ifr));
>
>                 fd = socket(PF_CAN, SOCK_RAW, CAN_RAW)
>
>
>
>                 addr.can_family = AF_CAN;
>
>
>
>                 strcpy(ifr.ifr_name,”can0”);
>
> ioctl(fd, SIOCGIFINDEX, &ifr
>
>                 addr.can_ifindex = ifr.ifr_ifindex;
>
>
>
>                 setsockopt(dcan->fd, SOL_CAN_RAW, CAN_RAW_LOOPBACK,
> &loopback, sizeof(loopback));
>
>
>
>                  bind(dcan->fd, (struct sockaddr *) &addr, sizeof(addr))
>
>                  io = g_io_channel_unix_new(fd);
>
>                 g_assert(io);
>
>                 g_io_channel_set_encoding(io, NULL, NULL);
>
>                 g_io_channel_set_buffered(io, FALSE);
>
>                 ev_id = g_io_add_watch(io, G_IO_IN, NULL, NULL); / ev_id
> = g_io_add_watch(io, G_IO_IN, my_function, NULL);
>
>
>
> If any people know how to solve the problem, or any information may lead
> to this problem, please tell me .   Thanks very much
>
>
>
> Neil
>
>
>
>
>
> _______________________________________________
> gtk-list mailing list
> gtk-list@gnome.org
> https://mail.gnome.org/mailman/listinfo/gtk-list
>
>
_______________________________________________
gtk-list mailing list
gtk-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-list

Reply via email to