After use g_io_add_watch , the cpu usage to 100%



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

 

 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]