Shailabh Nagar wrote:
> Shailabh Nagar wrote:
> 
> 
<snip>

> Index: linux-2.6.17-mm3equiv/kernel/taskstats.c
> ===================================================================
> --- linux-2.6.17-mm3equiv.orig/kernel/taskstats.c     2006-06-30 
> 11:57:14.000000000 -0400
> +++ linux-2.6.17-mm3equiv/kernel/taskstats.c  2006-06-30 13:58:36.000000000 
> -0400
> @@ -266,7 +266,7 @@ void taskstats_exit_send(struct task_str
>       struct sk_buff *rep_skb;
>       void *reply;
>       size_t size;
> -     int is_thread_group;
> +     int is_thread_group, setid;
>       struct nlattr *na;
> 
>       if (!family_registered || !tidstats)
> @@ -320,7 +320,8 @@ void taskstats_exit_send(struct task_str
>       nla_nest_end(rep_skb, na);
> 
>  send:
> -     send_reply(rep_skb, 0, TASKSTATS_MSG_MULTICAST);
> +     setid = (smp_processor_id()%TASKSTATS_CPUS_PER_SET)+1;
> +     send_reply(rep_skb, setid, TASKSTATS_MSG_MULTICAST);

This should be
        send_reply(rep_skb, setid, TASKSTATS_MSG_UNICAST);

>       return;
> 
>  nla_put_failure:
> Index: linux-2.6.17-mm3equiv/Documentation/accounting/getdelays.c
> ===================================================================
> --- linux-2.6.17-mm3equiv.orig/Documentation/accounting/getdelays.c   
> 2006-06-28 16:08:56.000000000 -0400
> +++ linux-2.6.17-mm3equiv/Documentation/accounting/getdelays.c        
> 2006-06-30 14:09:28.000000000 -0400
> @@ -40,7 +40,7 @@ int done = 0;
>  /*
>   * Create a raw netlink socket and bind
>   */
> -static int create_nl_socket(int protocol, int groups)
> +static int create_nl_socket(int protocol, int cpugroup)
>  {
>      socklen_t addr_len;
>      int fd;
> @@ -52,7 +52,8 @@ static int create_nl_socket(int protocol
> 
>      memset(&local, 0, sizeof(local));
>      local.nl_family = AF_NETLINK;
> -    local.nl_groups = groups;
> +    local.nl_groups = TASKSTATS_LISTEN_GROUP;
> +    local.nl_pid = cpugroup;
> 
>      if (bind(fd, (struct sockaddr *) &local, sizeof(local)) < 0)
>       goto error;
> @@ -203,7 +204,7 @@ int main(int argc, char *argv[])
>      pid_t rtid = 0;
>      int cmd_type = TASKSTATS_TYPE_TGID;
>      int c, status;
> -    int forking = 0;
> +    int forking = 0, cpugroup = 0;
>      struct sigaction act = {
>       .sa_handler = SIG_IGN,
>       .sa_mask = SA_NOMASK,
> @@ -222,7 +223,7 @@ int main(int argc, char *argv[])
> 
>      while (1) {
> 
> -     c = getopt(argc, argv, "t:p:c:");
> +     c = getopt(argc, argv, "t:p:c:g:l");
>       if (c < 0)
>           break;
> 
> @@ -252,8 +253,14 @@ int main(int argc, char *argv[])
>           }
>           forking = 1;
>           break;
> +     case 'g':
> +             cpugroup = atoi(optarg);
> +             break;
> +     case 'l':
> +             loop = 1;
> +             break;
>       default:
> -         printf("usage %s [-t tgid][-p pid][-c cmd]\n", argv[0]);
> +         printf("usage %s [-t tgid][-p pid][-c cmd][-g cpugroup][-l]\n", 
> argv[0]);
>           exit(-1);
>           break;
>       }
> @@ -266,7 +273,7 @@ int main(int argc, char *argv[])
>      /* Send Netlink request message & get reply */
> 
>      if ((nl_sd =
> -      create_nl_socket(NETLINK_GENERIC, TASKSTATS_LISTEN_GROUP)) < 0)
> +      create_nl_socket(NETLINK_GENERIC, cpugroup)) < 0)
>       err(1, "error creating Netlink socket\n");
> 
> 
> @@ -287,10 +294,10 @@ int main(int argc, char *argv[])
> 
> 
>      if (!forking && sendto_fd(nl_sd, (char *) &req, req.n.nlmsg_len) < 0)
> +    if ((!forking && !loop) &&
> +     sendto_fd(nl_sd, (char *) &req, req.n.nlmsg_len) < 0)
>       err(1, "error sending message via Netlink\n");
> 
> -    act.sa_handler = SIG_IGN;
> -    sigemptyset(&act.sa_mask);
>      if (sigaction(SIGINT, &act, NULL) < 0)
>       err(1, "sigaction failed for SIGINT\n");
> 
> @@ -349,10 +356,11 @@ int main(int argc, char *argv[])
>                       rtid = *(int *) NLA_DATA(na);
>                       break;
>                   case TASKSTATS_TYPE_STATS:
> -                     if (rtid == tid) {
> +                     if (rtid == tid || loop) {
>                           print_taskstats((struct taskstats *)
>                                           NLA_DATA(na));
> -                         done = 1;
> +                         if (!loop)
> +                                 done = 1;
>                       }
>                       break;
>                   }
> @@ -369,7 +377,7 @@ int main(int argc, char *argv[])
>       if (done)
>           break;
>      }
> -    while (1);
> +    while (loop);
> 
>      close(nl_sd);
>      return 0;
> 

-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to